- Feature: #374 Add
#project
query method to load only specified fields
- Improvement: #359 Add support of
NULL
andNOT_NULL
operators - Improvement: #360 Add
store_attribute_with_nil_value
config option - Improvement: #368 Support Rails 6 (RC1)
- Fix: #357 Fix synchronous table creation issue
- Fix: #362 Fix issue with selecting Global Secondary Index (@atyndall)
- Fix: #368 Repair
#previous_changes
method from Dirty API - Fix: #373 Fix threadsafety of loading
Dynamoid::Adapter
(@tsub)
- Feature: #341, #342 Add
find_by_pages
method to provide access to DynamoDB query result pagination mechanism (@bmalinconico, @arjes) - Feature: #354 Add
map
field type
- Improvement: #340 Improve selecting more optimal GSI for Query operation - choose GSI with sort key if it's used in criteria (@ryz310)
- Improvement: #351 Add warnings about nonexistent fields in
where
conditions - Improvement: #352 Add warning about skipped conditions
- Improvement: #356 Simplify requiring Rake tasks in non-Rails application
- Improvement: Readme.md. Minor improvements and fixes (@cabello)
- Feature: #302 Add methods similar to
ActiveRecord::AttributeMethods::BeforeTypeCast
:- method
attributes_before_type_cast
- method
read_attribte_before_type_cast
- methods
<name>_before_type_cast
- method
- Feature: #303 Add
#update_attributes!
method - Feature: #304 Add
inheritance_field
option forDocument.table
method to specify column name for supporting STI and storing class name - Feature: #305 Add increment/decrement methods:
#increment
#increment!
#decrement
#decrement!
.inc
- Feature: #307 Allow to declare type of elements in
array
/set
fields withof
option. Only scalar types are supported as well as custom types - Feature: #312 Add Ability to specify network timeout connection settings (@lulu-ulul)
- Feature: #313 Add support for backoff in scan and query (@bonty)
- Improvement: #314 Re-implement
count
forwhere
-chain query efficiently. So nowwhere(...).count
doesn't load all the documents, just statistics
- Bug: #298 Fix
raw
field storing when value is a Hash with non-string keys - Bug: #299 Fix
raw
fields - skip empty strings and sets - Bug: #309 Fix loading of a document that contains not declared in model class fields
- Bug: #310 Fix
Adapter#list_tables
method to return names of all tables, not just first page (@knovoselic) - Bug: #311 Fix
consistent_read
option of.find
(@kokuyouwind) - Bug: #319 Repair consistent reading for
find_all
- Bug: #317 Fix
create_tables
rake task
- Maintenance: #267 Upgrade AWS SDK to V3
- Maintenance: #268 Drop support of old Ruby versions. Support Ruby since 2.3 version
- Maintenance: #268 Drop support of old Rails versions. Support Rails since 4.2 version
- Improvement: #278 Add type casting for finders (
find
,find_by_id
andfind_all
) - Improvement: #279 Change default value of
application_timezone
config option from:local
to:utc
- Feature: #288 Add
store_boolean_as_native
config option and set it totrue
by default. So all boolean fields are stored not as string't'
and'f'
but as native boolean values now - Feature: #289 Add
dynamodb_timezone
config option and set it to:utc
by default. So now alldate
anddatetime
fields stored in string format will be converted to UTC time zone by default
- Improvement: #261 Improve documentation (@walkersumida)
- Improvement: #264 Improve documentation (@xbx)
- Improvement: #278 Add Rails-like type casting
- Maintenance: #281 Deprecate dynamic finders,
find_all
,find_by_id
,find_by_composite_key
,find_all_by_composite_key
andfind_all_by_secondary_index
- Improvement: #285 Set timestamps (
created_at
andupdated_at
) inupsert
,update_fields
,import
andupdate
methods - Improvement: #286 Disable scan warning when intentionally loading all items from a collection (@knovoselic)
- Bug: #275 Fix custom type serialization/deserialization
- Bug: #283 Fix using string formats for partition and sort keys of
date
/datetime
type - Bug: #283 Fix type declaration of custom type fields. Returned by
.dynamoid_field_type
value is treated as Dynamoid's type now - Bug: #287 Fix logging disabling (@ghiculescu)
- N/A
- Feature: #256 Support Rails 5.2 (@andrykonchin)
- Bug: #255 Fix Vagrant RVM configuration and upgrade to Ruby 2.4.1 (@richardhsu)
- N/A
- Feature: #221 Add field declaration option
of
to specify the type ofset
elements (@pratik60) - Feature: #223 Add field declaration option
store_as_string
to storedatetime
as ISO-8601 formatted strings (@william101) - Feature: #228 Add field declaration option
store_as_string
to storedate
as ISO-8601 formatted strings (@andrykonchin) - Feature: #229 Support hash argument for
start
chain method (@mnussbaumer) - Feature: #236 Change log level from
info
todebug
for benchmark logging (@kicktheken) - Feature: #239 Add methods for low-level updating:
.update
,.update_fields
and.upsert
(@andrykonchin) - Feature: #243 Support
ne
condition operator (@andrykonchin) - Feature: #246 Added support of backoff in batch operations (@andrykonchin)
- added global config options
backoff
andbackoff_strategies
to configure backoff - added
constant
andexponential
built-in backoff strategies .find_all
and.import
support new backoff options
- added global config options
- Bug: #216 Fix global index detection in queries with conditions other than equal (@andrykonchin)
- Bug: #224 Fix how
contains
operator works withset
andarray
field types (@andrykonchin) - Bug: #225 Fix equal conditions for
array
fields (@andrykonchin) - Bug: #229 Repair support
start
chain method on Scan operation (@mnussbaumer) - Bug: #238 Fix default value of
models_dir
config option (@baloran) - Bug: #244 Allow to pass empty strings and sets to
.import
(@andrykonchin) - Bug: #246 Batch operations (
batch_write_item
andbatch_read_item
) handle unprocessed items themselves (@andrykonchin) - Bug: #250 Update outdated warning message about inefficient query and missing indices (@andrykonchin)
- Bug: 252 Don't loose nanoseconds when store DateTime as float number
Breaking changes in this release generally bring Dynamoid behavior closer to the Rails-way.
- Change: #186 Consistent behavior for
Model.where({}).all
(@andrykonchin)- <= 1.3.x behaviour -
- load lazily if user specified batch size
- load all collection into memory otherwise
- New behaviour -
- always return lazy evaluated collection
- It means Model.where({}).all returns Enumerator instead of Array.
- If you need Array interface you have to convert collection to Array manually with to_a method call
- <= 1.3.x behaviour -
- Change: #195 Failed
#find
returns error (@andrykonchin)- <= 1.3.x behaviour - find returns nil or smaller array.
- New behaviour - it raises RecordNotFound if one or more records can not be found for the requested ids
- Change: #196 Return value of
#save
(@andrykonchin)- <= 1.3.x behaviour - save returns self if model is saved successfully
- New behaviour - it returns true
- Feature: #185
where
, finders and friends take into account STI (single table inheritance) now (@andrykonchin)- query will return items of the model class and all subclasses
- Feature: #190 Allow passing options to range when defining attributes of the document (@richardhsu)
- Allows for serialized fields and passing the serializer option.
- Feature: #198 Enhanced
#create
and#create!
to allow multiple document creation like#import
(@andrykonchin)User.create([{name: 'Josh'}, {name: 'Nick'}])
- Feature: #199 Added
Document.import
method (@andrykonchin) - Feature: #205 Use batch deletion via
batch_write_item
fordelete_all
(@andrykonchin) - Rename: #205
Chain#destroy_all
asChain#delete_all
, to better match Rails conventions when no callbacks are run (@andrykonchin)- kept the old name as an alias, for backwards compatibility
- Feature: #207 Added slicing by 25 requests in #batch_write_item (@andrykonchin)
- Feature: #211 Improved Vagrant setup for testing (@richardhsu)
- Feature: #212 Add foreign_key option (@andrykonchin)
- Feature: #213 Support Boolean raw type (@andrykonchin)
- Improved Documentation (@pboling, @andrykonchin)
- Bug: #191, #192 Support lambdas as fix for value types were not able to be used as default values (@andrykonchin)(@richardhsu)
- Bug: #202 Fix several issues with associations (@andrykonchin)
- setting
nil
value raises an exception - document doesn't keep assigned model and loads it from the storage
- delete call doesn't update cached ids of associated models
- fix clearing old
has_many
association while add model to newhas_many
association
- setting
- Bug: #204 Fixed issue where
Document.where(:"id.in" => [])
would doQuery
operation instead ofScan
(@andrykonchin)- Fixed
Chain#key_present?
- Fixed
- Bug: #205 Fixed
delete_all
(@andrykonchin)- Fixed exception when makes scan and sort key is declared in model
- Fixed exception when makes scan and any condition is specified in where clause (like Document.where().delete_all)
- Fixed exception when makes query and sort key isn't declared in model
- Bug: #207 Fixed
#delete
method for caseadapter.delete(table_name, [1, 2, 3], range_key: 1)
(@andrykonchin)
- Added
Chain#last
method (@andrykonchin) - Added
date
field type (@andrykonchin) - Added
application_timezone
config option (@andrykonchin) - Allow consistent reading for Scan request (@andrykonchin)
- Use Query instead of Scan if there are no conditions for sort (range) key in where clause (@andrykonchin)
- Support condition operators for non-key fields for Query request (@andrykonchin)
- Support condition operators for Scan request (@andrykonchin)
- Support additional operators
in
,contains
,not_contains
(@andrykonchin) - Support type casting in
where
clause (@andrykonchin) - Rename
Chain#eval_limit
to#record_limit
(@richardhsu) - Add
Chain#scan_limit
(@richardhsu) - Support batch loading for Query requests (@richardhsu)
- Support querying Global/Local Secondary Indices in
where
clause (@richardhsu) - Only query on GSI if projects all attributes in
where
clause (@richardhsu)
- Fix incorrect applying of default field value (#36 and #117, @andrykonchin)
- Fix sync table creation/deletion (#160, @mirokuxy)
- Allow to override document timestamps (@andrykonchin)
- Fix storing empty array as nil (#8, @andrykonchin)
- Fix
limit
handling for Query requests (#85, @richardhsu) - Fix
limit
handling for Scan requests (#85, @richardhsu) - Fix paginating for Query requests (@richardhsu)
- Fix paginating for Scan requests (@richardhsu)
- Fix
batch_get_item
method call for integer partition key (@mudasirraza)
- Allow configuration of the Dynamoid models directory, as not everyone keeps non AR models in app/models
- Dynamoid::Config.models_dir = "app/whatever"
- Fix migrations by stopping the loading of all rails models outside the rails env.
- Implements #135
- dump values for :integer, :string, :boolean fields passed to where query
- e.g. You can search for booleans with any of:
[true, false, "t", "f", "true", "false"]
- e.g. You can search for booleans with any of:
- dump values for :integer, :string, :boolean fields passed to where query
- Adds support for Rails 5 without warnings.
- Adds rake tasks for working with a DynamoDB database:
- rake dynamoid:create_tables
- rake dynamoid:ping
- Automatically requires the Railtie when in Rails (which loads the rake tasks)
- Prevent duplicate entries in Dynamoid.included_models
- Added wwtd and appraisal to spec suite for easier verification of the compatibility matrix
- Support is now officially Ruby 2.0+, (including JRuby 9000) and Rails 4.0+
- Fixed specs (@AlexNisnevich & @pboling)
- Fix
blank?
andpresent?
behavior for single associations (#110, @AlexNisnevich & @bayesimpact) - Support BatchGet for more than 100 items (#80, @getninjas)
- Add ability to specify connection settings specific to Dynamoid (#116, @NielsKSchjoedt)
- Adds Support for Rails 5! (#109, @gastzars)
- Table Namespace Fix (#79, @alexperto)
- Improve Testing Docs (#103, @tadast)
- Query All Items by Looping (#102, @richardhsu)
- Store document in DocumentNotValid error for easier debugging (#98, holyketzer)
- Better support for raw datatype (#104, @OpenGov)
- Fix associative tables with non-id primary keys (#86, @everett-wetchler)
- Remove accidental Gemfile.lock; fix .gitignore (#95, @pboling)
- Allow options to put_items (#95, @alexperto)
- Support range key in secondary index queries (#95, @pboling)
- Better handling of options generally (#95, @pboling)
- Support for batch_delete_item API (#95, @pboling)
- Support for batch_write_item API (#95, @alexperto)
- Add create_table_syncronously, and sync: option to regular create_table (@pboling)
- make required for tables created with secondary indexes
- Expose and fix truncate method on adapter (#52, @pcorpet)
- Enable saving without updating timestamps (#58, @cignoir)
- Fix projected attributes by checking for :include (#56, @yoshida_tetsuhiro)
- Make behavior of association where method closer to AR by cloning instead of modifying (#51, @pcorpet)
- Add boolean field presence validator (#50, @pcorpet)
- Add association build method (#49, @pcorpet)
- Fix association create method (#47, #48, @pcorpet)
- Support range_between (#42, @ayemos)
- Fix problems with range query (#42, @ayemos)
- Don't prefix table names when namespace is nil (#40, @brenden)
- Added basic secondary index support (#34, @sumocoder)
- Fix query attribute behavior for booleans (#35, @amirmanji)
- Ignore unknown fields on model initialize (PR #33, @sumocoder)
- Added support for optimistic locking on delete (PR #29, @sumocoder)
- upgrade concurrent-ruby requirement to 1.0 (PR #31, @keithmgould)
- Add support for AWS SDK v2.
- Add support for custom class type for fields.
- Remove partitioning support.
- Remove support for Dynamoid's (pseudo)indexes, now that DynamoDB offers local and global indexes.
- Rename :float field type to :number.
- Rename Chain#limit to Chain#eval_limit.
Housekeeping:
- Switch from
fake_dynamo
for unit tests to DynamoDBLocal. This is the new authoritative implementation of DynamoDB for testing, and it supports AWS SDK v2. - Use Travis CI to auto-run unit tests on multiple Rubies.
- Randomize spec order.