in lib/aws-record/record/transactions.rb [59:103]
def transact_find(opts)
opts = opts.dup
client = opts.delete(:client) || dynamodb_client
transact_items = opts.delete(:transact_items)
model_classes = []
client_transact_items = transact_items.map do |tfind_opts|
model_class = tfind_opts.delete(:model_class)
model_classes << model_class
tfind_opts
end
request_opts = opts
request_opts[:transact_items] = client_transact_items
client_resp = client.transact_get_items(
request_opts
)
index = -1
ret = OpenStruct.new
ret.consumed_capacity = client_resp.consumed_capacity
ret.missing_items = []
ret.responses = client_resp.responses.map do |item|
index += 1
if item.nil? || item.item.nil?
missing_data = {
model_class: model_classes[index],
key: transact_items[index][:get][:key]
}
ret.missing_items << missing_data
nil
else
raw_item = item.item
model_class = model_classes[index]
new_item_opts = {}
raw_item.each do |db_name, value|
name = model_class.attributes.db_to_attribute_name(db_name)
new_item_opts[name] = value
end
item = model_class.new(new_item_opts)
item.clean!
item
end
end
ret
end