Class: Dynamoid::Indexes::Index

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Validations
Defined in:
lib/dynamoid/indexes.rb

Overview

Represents the attributes of a DynamoDB index.

Constant Summary collapse

PROJECTION_TYPES =
[:keys_only, :all].to_set
DEFAULT_PROJECTION_TYPE =
:keys_only

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attrs = {}) ⇒ Index

Returns a new instance of Index.



190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
# File 'lib/dynamoid/indexes.rb', line 190

def initialize(attrs={})
  unless attrs[:dynamoid_class].present?
    raise Dynamoid::Errors::InvalidIndex.new(':dynamoid_class is required')
  end

  @dynamoid_class = attrs[:dynamoid_class]
  @type = attrs[:type]
  @hash_key = attrs[:hash_key]
  @range_key = attrs[:range_key]
  @name = attrs[:name] || @dynamoid_class.index_name(@hash_key, @range_key)
  @projected_attributes =
      attrs[:projected_attributes] || DEFAULT_PROJECTION_TYPE
  @read_capacity = attrs[:read_capacity]
  @write_capacity = attrs[:write_capacity]

  raise Dynamoid::Errors::InvalidIndex.new(self) unless self.valid?
end

Instance Attribute Details

#dynamoid_classObject

Returns the value of attribute dynamoid_class.



177
178
179
# File 'lib/dynamoid/indexes.rb', line 177

def dynamoid_class
  @dynamoid_class
end

#hash_keyObject

Returns the value of attribute hash_key.



177
178
179
# File 'lib/dynamoid/indexes.rb', line 177

def hash_key
  @hash_key
end

#hash_key_schemaObject

Returns the value of attribute hash_key_schema.



177
178
179
# File 'lib/dynamoid/indexes.rb', line 177

def hash_key_schema
  @hash_key_schema
end

#nameObject

Returns the value of attribute name.



177
178
179
# File 'lib/dynamoid/indexes.rb', line 177

def name
  @name
end

#projected_attributesObject

Returns the value of attribute projected_attributes.



177
178
179
# File 'lib/dynamoid/indexes.rb', line 177

def projected_attributes
  @projected_attributes
end

#range_keyObject

Returns the value of attribute range_key.



177
178
179
# File 'lib/dynamoid/indexes.rb', line 177

def range_key
  @range_key
end

#range_key_schemaObject

Returns the value of attribute range_key_schema.



177
178
179
# File 'lib/dynamoid/indexes.rb', line 177

def range_key_schema
  @range_key_schema
end

#read_capacityObject

Returns the value of attribute read_capacity.



177
178
179
# File 'lib/dynamoid/indexes.rb', line 177

def read_capacity
  @read_capacity
end

#typeObject

Returns the value of attribute type.



177
178
179
# File 'lib/dynamoid/indexes.rb', line 177

def type
  @type
end

#write_capacityObject

Returns the value of attribute write_capacity.



177
178
179
# File 'lib/dynamoid/indexes.rb', line 177

def write_capacity
  @write_capacity
end

Instance Method Details

#projection_typeSymbol

Convenience method to determine the projection type for an index. Projection types are: :keys_only, :all, :include.

Returns:

  • (Symbol)

    the projection type.



213
214
215
216
217
218
219
# File 'lib/dynamoid/indexes.rb', line 213

def projection_type
  if @projected_attributes.is_a? Array
    :include
  else
    @projected_attributes
  end
end