You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Occasionally we would like to use Update expressions for more advanced updates than seem to be available when modifying an attribute and using the existing #update methods. We particularly need this for transactions.
For example:
Use ADD/DELETE to modify items in a set
Use if_not_exists function to control behavior when multiple updates occur in succession
Accumulate a value during a transaction (similar to increment! but in a transaction)
It would be great if there were a way to do this in special cases while still largely taking advantages of the conveniences afforded by this SDK.
Unfortunately, update_expression is always set directly with no opportunity to override it.
If update_expression is passed in opts, use it instead of a generated one.
If update_expression is passed in opts, merge it with the generated one (might need to combine with the generated SET/REMOVE clauses)
A way to pass-through raw update clauses to Aws::Record::Transactions.transact_write that only set the minimal key/table rather than the full transformation (similar to delete).
A way to generate more raw actions similar to #transact_check_expression.
Thanks!
The text was updated successfully, but these errors were encountered:
Thanks for opening an issue. Tagging as a feature request. I am happy to review any pull requests if you have bandwidth. I recently plumbed through some options to save and update. I think option 1 (using opts, generally, over default values) is reasonable and I'd like to see that throughout item_operations and transactions usage.
lsglick
added a commit
to lsglick/aws-sdk-ruby-record
that referenced
this issue
Oct 14, 2023
…changes
This is a minimal implementation to allow update expressions to be passed through directly to the api call. To avoid conflicts, an error is raised if an update expression would have been generated by the sdk to update dirty attributes.
Also: Adds support for pass-through API options to the class-level `.update` item operation.
Resolvesaws#137
Occasionally we would like to use Update expressions for more advanced updates than seem to be available when modifying an attribute and using the existing
#update
methods. We particularly need this for transactions.For example:
ADD
/DELETE
to modify items in a setif_not_exists
function to control behavior when multiple updates occur in successionincrement!
but in a transaction)It would be great if there were a way to do this in special cases while still largely taking advantages of the conveniences afforded by this SDK.
Unfortunately,
update_expression
is always set directly with no opportunity to override it.E.g. Item Operations:
https://github.com/aws/aws-sdk-ruby-record/blob/92e0070eea16698e23be8e31d3a36e681dc079e9/lib/aws-record/record/item_operations.rb#L609
E.g. Transactions:
https://github.com/aws/aws-sdk-ruby-record/blob/92e0070eea16698e23be8e31d3a36e681dc079e9/lib/aws-record/record/transactions.rb#L294
Some potential ideas:
update_expression
is passed inopts
, use it instead of a generated one.update_expression
is passed inopts
, merge it with the generated one (might need to combine with the generatedSET
/REMOVE
clauses)update
clauses toAws::Record::Transactions.transact_write
that only set the minimal key/table rather than the full transformation (similar todelete
).#transact_check_expression
.Thanks!
The text was updated successfully, but these errors were encountered: