- (breaking) Revised multi-table transaction API (thanks @bartelink)
- Added support for
defaultArg
in update expressions on the same attribute, allowing SET if_not_exists semantics (eg { record with OptionalValue = Some (defaultArg record.OptionalValue "Default") }) - Allow empty strings in non-key attributes (thanks @purkhusid)
- Support multi-table transactions (thanks @purkhusid)
- Added support for
Array.contains
andList.contains
to compare an attribute against multiple values (thanks @faldor20) - Added
AllowMultiple = true
forGlobalSecondaryIndex*
Attributes to allow indices to share an attribute - Modified index selection priority to better handle string
BeginsWith
queries on inverse GSIs (thanks @matti-avilabs) - Added
ReturnValuesOnConditionCheckFailure.ALL_OLD
to include the item values in theConditionCheckFailedException
(thanks for the suggestion @bartelink) - (breaking) Removed obsolete
BinaryFormatterAttribute
- Added optional
?consistentRead
parameter to Get requests (thanks @matti-avilabs) - Fixed
TransactWriteItems
: updated validation to reflect increased limit of 100 items in service
- Updated internal
TypeShape
dependency to 10.0.0 - Updated internal
AwaitTaskCorrect
implementation to align with canonical version #49 - Added SourceLink info (using
DotNet.ReproducibleBuilds
) - Fixed
TableContext.UpdateTableIfRequiredAsync
: Guard againstNullReferenceException
whenStreamSpecification
isnull
- (breaking) Changed
TableContext.UpdateTableIfRequiredAsync
/VerifyOrCreateTableAsync
to yieldTableDescription
(in order to surface ARNs)
- Added
Precondition.CheckFailed
- Added
TableContext.TransactWriteItems
,TransactWrite
DU,TransactWriteItemsRequest.TransactionCanceledConditionalCheckFailed
- Fixed accidentally removed/renamed legacy factory methods (
TableContext.Create
/TableContext.CreateAsync
)
- Added
TableContext
constructor (replacesTableContext.Create(verifyTable = false)
) - Added
TableContext.VerifyOrCreateTableAsync
(replacesTableContext.VerifyTableAsync(createIfNotExists = true)
) - Added
TableContext.UpdateTableIfRequiredAsync
(conditionalUpdateTableAsync
to establish specifiedthroughput
orstreaming
only if required. ReplacesUpdateProvisionedThroughputAsync
) - Added
TableContext.Scripting.Initialize
(two overloads, replacingTableContext.Create()
andTableContext.Create(createIfNotExists = true)
) - Added
Throughput.OnDemand
mode (setsBillingMode
toPAY_PER_REQUEST
, to go with the existing support for configuringPROVISIONED
and aProvisionedThroughput
) - Added ability to configure DynamoDB streaming (via a
Streaming
DU) toVerifyOrCreateTableAsync
andUpdateTableIfRequiredAsync
- Obsoleted
TableContext.Create
(replace withTableContext.Scripting.Initialize
,TableContext.VerifyOrCreateTableAsync
,TableContext.VerifyTableAsync
) - Obsoleted
TableContext.UpdateProvisionedThroughputAsync
(replace withTableContext.UpdateTableIfRequiredAsync
) - (breaking) Obsoleted
TableContext.VerifyTableAsync
optional argument to create a Table (replace withVerifyOrCreateTableAsync
) - (breaking) Changed
TableKeySchemata.CreateCreateTableRequest
toApplyToCreateTableRequest
(with minor signature change) - (breaking; reverted in
0.10.1
) RemovedTableContext.CreateAsync
(replace withTableContext.VerifyTableAsync
orVerifyOrCreateTableAsync
)
- Moved Sync-over-Async versions of
TableContext
operations intonamespace FSharp.AWS.DynamoDB.Scripting
- Added
WithMetricsCollector()
copy method to allow separating metrics by context (eg by request) - Ensured metrics are reported even for failed requests
- Added
TryGetItemAsync
(same asGetItemAsync
, but returnsNone
, instead of throwing, if an item is not present) - Switched test framework to Xunit, assertions to Unquote, runner to
dotnet test
- Added
RequestMetrics
record type - Added an optional
metricsCollector
parameter toTableContext.Create
to receive operation metrics
- Pinned FSharp.Core to 4.7.2, properly this time I hope
- Pinned FSharp.Core to 4.7.2
- Added
ScanPaginated*
andQueryPaginated*
methods toTableContext
to support paginating queries (implements #27) - Added
IndexKey
type to support additional key fields in LastEvaluatedKey for queries (ie on LSI & GSI indices) - Breaking renamed one of the method parameters from
filterExpr
tofilterCondition
for consistency
- Replace attribute name validation with something that sticks closer to the AWS naming rules - fixes #29
- Update project to net50 & bumped dependencies
- Replace deprecated AWS ProfileManager usage
- Bumped test project netcoreapp version to 3.1
- Fixed 'Invalid UpdateExpression' exception for precomputed Map.remove operations (#20)
- Move to netstandard2.0.
- Add sparse GSI Support.
- Preserve original offsets when persisting DateTimeOffset fields.
- Move converter generation to TypeShape.
- Target latest unquote release.
- Fix packaging issue.
- Implement credential helper methods.
- Minor bugfixes.
- Implement secondary indices.
- Projection expressions bugfixes and improvements.
- Implement projection expressions.
- Minor API improvements.
- Minor bugfixes.
- Expose ProvisionedThroughput type to local namespace.
- Rename to FSharp.AWS.DynamoDB.
- Add update provision throughput methods.
- Improvements to Enumeration representations.
- Add checks for comparison compatibility in condition expressions.
- Bugfix.
- Add parametric support in attribute ids and key lookups.
- Add support for Array/List.isEmpty and Option.isSome/isNone in conditional expressions.
- Bugfix.
- Fix floating point parsing issue.
- Bugfixes.
- Fix API issue.
- Improve exception message in case where table item is not found.
- Tweak ConstanHashKey methods in RecordTemplate.
- Implement GetHashKeyCondition method.
- Implement update expression combiners.
- Implement update expression combiners.
- Make scan filter condition optional.
- Implement conditional combinators.
- Add support for condition expressions in delete operations.
- Add support for attribute existential primitives.
- Implement string representation attribute.
- Support list consing in update expressions.
- TableContext API refinements.
- Implement parametric expressions.
- Bugfix.
- Revisions in TableContext API.
- Support MemoryStream field types.
- Implement DefaultRangeKeyAttribute.
- Improve PropertySerializer API.
- Initial release.