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



479
480
481
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 479

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

Instance Attribute Details

#schemaObject (readonly)

Returns the value of attribute schema.



474
475
476
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 474

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



501
502
503
504
505
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 501

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



493
494
495
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 493

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

#item_countObject



507
508
509
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 507

def item_count
  schema[:item_count]
end

#range_keyObject



483
484
485
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 483

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

#range_typeObject



487
488
489
490
491
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 487

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