Class: WolfCore::NoSqlDbInstanceDataSource
- Inherits:
-
Object
- Object
- WolfCore::NoSqlDbInstanceDataSource
- Defined in:
- lib/wolf_core/infrastructure/no_sql_db_instance_data_source.rb
Class Attribute Summary collapse
-
.instance ⇒ Object
readonly
Returns the value of attribute instance.
Class Method Summary collapse
Instance Method Summary collapse
- #get_item(table_name:, key:) ⇒ Object
- #get_item_by_index(table_name:, key_condition_expression:, expression_attribute_values:, index_name: nil) ⇒ Object
-
#initialize(client:) ⇒ NoSqlDbInstanceDataSource
constructor
A new instance of NoSqlDbInstanceDataSource.
- #put_item(table_name:, item:) ⇒ Object
- #query(table_name:, key_condition_expression:, expression_attribute_values:, index_name: nil, limit: nil) ⇒ Object
Constructor Details
#initialize(client:) ⇒ NoSqlDbInstanceDataSource
16 17 18 |
# File 'lib/wolf_core/infrastructure/no_sql_db_instance_data_source.rb', line 16 def initialize(client:) @client = client end |
Class Attribute Details
.instance ⇒ Object (readonly)
Returns the value of attribute instance.
13 14 15 |
# File 'lib/wolf_core/infrastructure/no_sql_db_instance_data_source.rb', line 13 def instance @instance end |
Class Method Details
.init(region: "us-east-1") ⇒ Object
5 6 7 8 9 10 |
# File 'lib/wolf_core/infrastructure/no_sql_db_instance_data_source.rb', line 5 def self.init(region: "us-east-1") return @instance if @instance dynamodb_client = Aws::DynamoDB::Client.new(region: region) @instance = new(client: dynamodb_client) end |
Instance Method Details
#get_item(table_name:, key:) ⇒ Object
30 31 32 33 34 35 36 37 38 39 |
# File 'lib/wolf_core/infrastructure/no_sql_db_instance_data_source.rb', line 30 def get_item(table_name:, key:) Result.try do get_params = { table_name: table_name, key: key } item = @client.get_item(get_params).item Result.success(data: { item: item }) end end |
#get_item_by_index(table_name:, key_condition_expression:, expression_attribute_values:, index_name: nil) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/wolf_core/infrastructure/no_sql_db_instance_data_source.rb', line 41 def get_item_by_index(table_name:, key_condition_expression:, expression_attribute_values:, index_name: nil) Result.try do query( table_name: table_name, key_condition_expression: key_condition_expression, expression_attribute_values: expression_attribute_values, index_name: index_name, limit: 1 ).fold do |data| items = data.items Result.success(data: { item: items.first }) end end end |
#put_item(table_name:, item:) ⇒ Object
20 21 22 23 24 25 26 27 28 |
# File 'lib/wolf_core/infrastructure/no_sql_db_instance_data_source.rb', line 20 def put_item(table_name:, item:) Result.try do response = @client.put_item({ table_name: table_name, item: item }) Result.success(data: { response: response }) end end |
#query(table_name:, key_condition_expression:, expression_attribute_values:, index_name: nil, limit: nil) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/wolf_core/infrastructure/no_sql_db_instance_data_source.rb', line 56 def query(table_name:, key_condition_expression:, expression_attribute_values:, index_name: nil, limit: nil) Result.try do query_params = { table_name: table_name, key_condition_expression: key_condition_expression, expression_attribute_values: expression_attribute_values } query_params[:index_name] = index_name if index_name query_params[:limit] = limit if limit items = @client.query(query_params).items Result.success(data: { items: items }) end end |