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



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

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

Instance Attribute Details

#schemaObject (readonly)

Returns the value of attribute schema.



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

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



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

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



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

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

#item_countObject



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

def item_count
  schema[:item_count]
end

#nameObject



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

def name
  schema[:table_name]
end

#range_keyObject



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

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

#range_typeObject



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

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