Class: Dynamoid::AdapterPlugin::AwsSdkV2::Table

Inherits:
Object
  • Object
show all
Defined in:
lib/dynamoid/adapter_plugin/aws_sdk_v2.rb

Overview

Represents a table. Exposes data from the “DescribeTable” API call, and also provides methods for coercing values to the proper types based on the table’s schema data

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(schema) ⇒ Table

Returns a new instance of Table.

Parameters:

  • schema (Hash)

    Data returns from a “DescribeTable” call



932
933
934
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 932

def initialize(schema)
  @schema = schema[:table]
end

Instance Attribute Details

#schemaObject (readonly)

Returns the value of attribute schema.



927
928
929
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 927

def schema
  @schema
end

Instance Method Details

#col_type(col) ⇒ Object

Returns the API type (e.g. “N”, “S”) for the given column, if the schema defines it, nil otherwise



954
955
956
957
958
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 954

def col_type(col)
  col = col.to_s
  col_def = schema[:attribute_definitions].find { |d| d[:attribute_name] == col.to_s }
  col_def && col_def[:attribute_type]
end

#hash_keyObject



946
947
948
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 946

def hash_key
  @hash_key ||= schema[:key_schema].find { |d| d[:key_type] == HASH_KEY  }.try(:attribute_name).to_sym
end

#item_countObject



960
961
962
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 960

def item_count
  schema[:item_count]
end

#range_keyObject



936
937
938
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 936

def range_key
  @range_key ||= schema[:key_schema].find { |d| d[:key_type] == RANGE_KEY }.try(:attribute_name)
end

#range_typeObject



940
941
942
943
944
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 940

def range_type
  range_type ||= schema[:attribute_definitions].find { |d|
    d[:attribute_name] == range_key
  }.try(:fetch, :attribute_type, nil)
end