Releases: circles-learning-labs/ecto_adapters_dynamodb
Ecto 3 support
This major version release adds support for Ecto 3! Additionally, this release features:
- Support for the latest version of DynamoDB local (
1.11.478
at the time of this release) - Support for the time-to-live attribute in migrations
- Fixes a bug where
select
clauses in queries were not working correctly - Fixes a bug where source-mapped fields were not being loaded correctly
- Improved performance by avoiding encoding data structures for unwritten logs
- Support for
delete_all
operations in excess of 25 records - Improved documentation and setup instructions
- Improved tests and test coverage
Currently, this release does not have support for Ecto 3's lock_for_migrations/4
, checkout/3
, and stream/5
- these are flagged in the "Issues" section of this repo as "help wanted" - if you have any insight into how or whether these features should be supported for DynamoDB, please weigh in on them there!
If you are upgrading from version 1.X.X to version 2.X.X of the adapter (Ecto 2.X.X to Ecto 3.X.X, respectively), see the upgrade guide, or reference Ecto's documentation on this subject.
Improve setup documentation, correctly set ex_aws config variables, support latest DDB local
The setup instructions in the README have been revised and clarified, and some missing details have been filled in.
In earlier beta/alpha releases, the adapter was failing to pass some of its config values to :ex_aws
- this has been resolved, the configuration shown in the README will now work correctly.
The latest versions of production DDB and DDB local (1.11.478
) no longer returns a "BillingModeSummary"
for tables with provisioned throughput when describe_table
is called on those tables; this release fixes a bug that was caused by that missing key, but allows for backwards compatibility for local version 1.11.477
- though it is recommended that users should update to the latest version locally. See #53 for more information on this.
Ecto version 3.X.X support - beta release
We're feeling confident about the integrity of this release, so we are promoting it to "beta" status.
This release also includes support for delete_all
operations in excess of 25 records and improved test coverage.
migration_source refactor
This patch release includes the correct refactor for the issue described in #38, as well as additional code cleanup.
Fix bug, remove unused/unnecessary code, improved performance
A few small fixes and tweaks in this patch -
-
Fix a bug introduced in commit f886c62 (2.0.0-alpha.2)
-
Remove some commented-out code that's no longer in use, and remove unnecessary MapSet decoding, which is now handled by the ExAws Dynamo dependency.
-
Improved performance by avoiding encoding data structures for logs that are not being written.
Fix source-mapped fields
This alpha release patches a bug where the values for source-mapped fields were not being loaded correctly.
Fix broken query :select clause behavior
This alpha release amends :select
clauses in queries, which were broken in the previous release.
Ecto version 3.X.X support - alpha release
This release is our first take at providing support for Ecto version 3.X.X!
Currently, all of the existing tests are passing and we've been able to successfully integrate this into one of our applications seemingly without problem - but this release probably should not yet be treated as production-ready.
If you are already using this adapter in conjunction with Ecto version 2.X.X, you'd want to follow Ecto's upgrade guide in terms of identifying any breaking changes (most notably, the adapter is no longer specified in your app's configuration, but rather in the module where you define your app's repo). I've added a bit about this in the README.
There are a few notable things-to-do, for which I'll be creating "To-do" issues:
-
Consider adding support for
stream/5
(see `lib/ecto_adapters_dynamodb.ex) -
Consider adding support for
checkout/3
(see `lib/ecto_adapters_dynamodb.ex) -
Consider adding support for
lock_for_migrations/4
(see `lib/ecto_adapters_dynamodb.ex) -
Clean up/improve tests and add additional test cases
- make sure tests cover all types specified in
decode_type/2
, includingMapSet
and embeddedMapSet
- add tests for scenarios where
insert_nil_fields
config option has been set tofalse
- add tests for scenarios where
remove_nil_fields_on_update
config option has been set totrue
- make sure tests cover all types specified in
-
Generally improve documentation
Don't hesitate to jump in and get your hands dirty! We appreciate all support from the community.
Support Ecto composite primary keys
This minor version release adds update
and delete
support for Ecto models where two primary keys have been set for a model with a DynamoDB composite primary key. Previously, an operation like:
Repo.get_by(BookPage, [id: "gatsby", page_num: 1])
|> Repo.delete
(where id
and page_num
were both identified on the model as primary keys and both make up a DDB composite primary key) would fail if there were multiple records with the id
"gatsby"; the same would occur for update
actions. These behaviors are now supported.
This release also includes a minor version update to the ex_aws_dynamo
dependency, and patch version updates to the hackney
and ssl_verify_fun
deps.
Update ex_aws_dynamo dep
This release updates the ex_aws_dynamo dependency, which was updated to fix its handling of binary data types.