class Dynamo::Record::BatchRequest

Constants

MAX_RECORD_SIZE

Attributes

record[R]
type[R]

Public Class Methods

new(record, type) click to toggle source
# File lib/dynamo/record/batch_request.rb, line 10
def initialize(record, type)
  @type = type
  @record = record
  validate_type
  validate_request_size
end

Public Instance Methods

delete_request() click to toggle source
# File lib/dynamo/record/batch_request.rb, line 29
def delete_request
  {
    delete_request: {
      key: record.send(:key_values)
    }
  }
end
request() click to toggle source
# File lib/dynamo/record/batch_request.rb, line 17
def request
  @request ||= send("#{type}_request")
end
request_size() click to toggle source
# File lib/dynamo/record/batch_request.rb, line 37
def request_size
  @request_size ||= request.to_json.length
end
save_request() click to toggle source
# File lib/dynamo/record/batch_request.rb, line 21
def save_request
  {
    put_request: {
      item: record.send(:_build_item_for_save)
    }
  }
end
validate_request_size() click to toggle source
# File lib/dynamo/record/batch_request.rb, line 41
def validate_request_size
  return unless request_size > MAX_RECORD_SIZE

  raise RecordTooLargeError.new(record), 'Record is too large'
end
validate_type() click to toggle source
# File lib/dynamo/record/batch_request.rb, line 47
def validate_type
  return if %i[save delete].include? type

  raise UnsupportedRequestTypeError
end