module DashOverlord::Models::V1::DynamoDb
Public Instance Methods
filter_params()
click to toggle source
# File lib/dash_overlord/models/v1/dynamo_db/scan.rb, line 74 def filter_params return {} unless filters initial_params = { key_condition_expression: "#dashboard_id = :dashboard_id", filter_expression: [], expression_attribute_names: { "#dashboard_id" => "dashboard_id" }, expression_attribute_values: { ':dashboard_id' => 1 } } filters_mapped = \ filters.each_with_object(initial_params) do |(key, value), object| process_filter(key, value, object) object end filters_mapped[:filter_expression] = \ filters_mapped[:filter_expression].join(' and ') filters_mapped end
paginated_scan()
click to toggle source
# File lib/dash_overlord/models/v1/dynamo_db/scan.rb, line 52 def paginated_scan (limit && current_page) end
params()
click to toggle source
# File lib/dash_overlord/models/v1/dynamo_db/scan.rb, line 66 def params { table_name: "#{table_name}", exclusive_start_key: last_evaluated_key, limit: limit }.merge(filter_params) end
scan_page()
click to toggle source
# File lib/dash_overlord/models/v1/dynamo_db/scan.rb, line 56 def scan_page result = client.query(params) DynamoDb::PaginatedResult.new \ items: result.items.map{ |item| resource_class.new(item) }, last_evaluated_key: result.last_evaluated_key, exclusive_start_key: last_evaluated_key, limit: limit end
Private Instance Methods
process_filter(attribute_expression, value, object)
click to toggle source
# File lib/dash_overlord/models/v1/dynamo_db/scan.rb, line 103 def process_filter(attribute_expression, value, object) attribute = attribute_expression.to_s.gsub('_eq', '') object[:expression_attribute_names]["##{attribute}"] = \ attribute object[:expression_attribute_values][":#{attribute}"] = \ value object[:filter_expression] << \ "##{attribute} = :#{attribute}" end