Class: Dynamoid::AdapterPlugin::AwsSdkV3::Table

Inherits:
Object
  • Object
show all
Defined in:
lib/dynamoid/adapter_plugin/aws_sdk_v3.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



884
885
886
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3.rb', line 884

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

Instance Attribute Details

#schemaObject (readonly)

Returns the value of attribute schema.



879
880
881
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3.rb', line 879

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



906
907
908
909
910
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3.rb', line 906

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



898
899
900
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3.rb', line 898

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

#item_countObject



912
913
914
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3.rb', line 912

def item_count
  schema[:item_count]
end

#nameObject



916
917
918
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3.rb', line 916

def name
  schema[:table_name]
end

#range_keyObject



888
889
890
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3.rb', line 888

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

#range_typeObject



892
893
894
895
896
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3.rb', line 892

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