Closed lsglick closed 1 year ago
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.
@mullermp I took a pass at it in #138. Let me know what you think!
There's a bit of logic duplication, but I was mostly trying to following existing structure in the repo.
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!