module WolfCore::NoSqlDbDataSource

def get_item(table_name:, key:, index_name: nil)

def get_item(table_name:, key:, index_name: nil)
  get_params = {
    table_name: table_name,
    key: key
  }
  get_params[:index_name] = index_name if index_name
  instance.get_item(get_params).item
end

def init(region: 'us-east-1')

def init(region: 'us-east-1')
  @@dynamodb_client ||= Aws::DynamoDB::Client.new(region: region)
end

def instance

def instance
  @@dynamodb_client
end

def put_item(table_name:, item:)

def put_item(table_name:, item:)
  instance.put_item({
    table_name: table_name,
    item: item
  })
end

def query(table_name:, key_condition_expression:, expression_attribute_values:, index_name: nil, limit: nil)

def query(table_name:, key_condition_expression:, expression_attribute_values:, index_name: nil, limit: nil)
  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
  instance.query(query_params).items
end