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

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


15
16
17
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3/table.rb', line 15

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

Instance Attribute Details

#schemaObject (readonly)

Returns the value of attribute schema


10
11
12
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3/table.rb', line 10

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


37
38
39
40
41
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3/table.rb', line 37

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


29
30
31
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3/table.rb', line 29

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

#item_countObject


43
44
45
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3/table.rb', line 43

def item_count
  schema[:item_count]
end

#nameObject


47
48
49
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3/table.rb', line 47

def name
  schema[:table_name]
end

#range_keyObject


19
20
21
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3/table.rb', line 19

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

#range_typeObject


23
24
25
26
27
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3/table.rb', line 23

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