class DashOverlord::Models::V1::DynamoDb::Base
Public Class Methods
all()
click to toggle source
# File lib/dash_overlord/models/v1/dynamo_db/base.rb, line 35 def self.all DynamoDb::Scan.new \ client: client, table_name: table_name, resource_class: self end
client()
click to toggle source
# File lib/dash_overlord/models/v1/dynamo_db/base.rb, line 8 def self.client @client ||= Aws::DynamoDB::Client.new end
create(attributes = {})
click to toggle source
# File lib/dash_overlord/models/v1/dynamo_db/base.rb, line 19 def self.create(attributes = {}) client.put_item \ create_params(attributes) end
create_all(items)
click to toggle source
# File lib/dash_overlord/models/v1/dynamo_db/base.rb, line 12 def self.create_all(items) items.each_slice(25) do |batch| client.batch_write_item \ create_all_params(batch) end end
find_by(attribute)
click to toggle source
# File lib/dash_overlord/models/v1/dynamo_db/base.rb, line 24 def self.find_by(attribute) result = @client.get_item({ table_name: table_name, key: attribute }) return nil unless result.item self.new(result.item) end
ransack(filters)
click to toggle source
def self.page(page, last_evaluated_key)
DynamoDb::Scan.new \ current_page: page, last_evaluated_key: last_evaluated_key, client: client, table_name: table_name, resource_class: self
end
# File lib/dash_overlord/models/v1/dynamo_db/base.rb, line 55 def self.ransack(filters) return unless filters DynamoDb::Scan.new \ client: client, table_name: table_name, resource_class: self, filters: filters end
table_name()
click to toggle source
# File lib/dash_overlord/models/v1/dynamo_db/base.rb, line 65 def self.table_name return @table_name if defined?(@table_name) @table_name = name.split('::').last.underscore end
Private Class Methods
create_all_params(items)
click to toggle source
# File lib/dash_overlord/models/v1/dynamo_db/base.rb, line 86 def self.create_all_params(items) { request_items: { "#{table_name}" => items_params(items) } } end
create_params(attributes)
click to toggle source
# File lib/dash_overlord/models/v1/dynamo_db/base.rb, line 79 def self.create_params(attributes) { table_name: table_name, item: attributes } end
items_params(items)
click to toggle source
# File lib/dash_overlord/models/v1/dynamo_db/base.rb, line 94 def self.items_params(items) items.map do |item| { put_request: { item: item } } end end
scan_params()
click to toggle source
# File lib/dash_overlord/models/v1/dynamo_db/base.rb, line 104 def self.scan_params { table_name: table_name, exclusive_start_key: @last_evaluated_key, limit: @per_page } end
Public Instance Methods
assign_attributes(attributes)
click to toggle source
# File lib/dash_overlord/models/v1/dynamo_db/base.rb, line 73 def assign_attributes(attributes) attributes.each { |key, value| send("#{key}=", value) } end
result(args)
click to toggle source
# File lib/dash_overlord/models/v1/dynamo_db/base.rb, line 42 def result(args) self end