Module: MemoryModel::Collection::Initializers

Extended by:
ActiveSupport::Concern
Included in:
MemoryModel::Collection
Defined in:
lib/memory_model/collection/initializers.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#add_index(name, options = {}) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/memory_model/collection/initializers.rb', line 11

def add_index(name, options={})
  type          = :unique if options.delete(:unique)
  type          ||= options.delete(:type) || :multi
  indexes[name] = Index.const_get(type.to_s.camelize).new(name, options)
rescue NameError => e
  raise TypeError, "#{type.inspect} is not a valid index"
end

#index_namesObject



23
24
25
# File 'lib/memory_model/collection/initializers.rb', line 23

def index_names
  indexes.keys
end

#indexesObject



19
20
21
# File 'lib/memory_model/collection/initializers.rb', line 19

def indexes
  @indexes ||= {}
end

#initialize(model) ⇒ Object



6
7
8
9
# File 'lib/memory_model/collection/initializers.rb', line 6

def initialize(model)
  @model = model
  set_primary_key :_uuid_, default: nil
end

#set_primary_key(key, options = {}) ⇒ Object



27
28
29
30
31
32
33
34
35
# File 'lib/memory_model/collection/initializers.rb', line 27

def set_primary_key(key, options={})
  if options[:auto_increment] != false && !options.has_key?(:default)
    options[:auto_increment] = true
  end
  options[:comparable] ||= false
  @model.field key, options
  add_index key, type: :unique
  @primary_key = key
end