Module: Superstore::Persistence::ClassMethods

Defined in:
lib/superstore/persistence.rb

Instance Method Summary collapse

Instance Method Details

#batch(&block) ⇒ Object



36
37
38
# File 'lib/superstore/persistence.rb', line 36

def batch(&block)
  adapter.batch(&block)
end

#batching?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/superstore/persistence.rb', line 32

def batching?
  adapter.batching?
end

#create(attributes = {}, &block) ⇒ Object



18
19
20
21
22
# File 'lib/superstore/persistence.rb', line 18

def create(attributes = {}, &block)
  new(attributes, &block).tap do |object|
    object.save
  end
end

#delete(ids) ⇒ Object



10
11
12
# File 'lib/superstore/persistence.rb', line 10

def delete(ids)
  adapter.delete table_name, ids
end

#delete_allObject



14
15
16
# File 'lib/superstore/persistence.rb', line 14

def delete_all
  adapter.execute "TRUNCATE #{table_name}"
end

#encode_attributes(attributes) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
# File 'lib/superstore/persistence.rb', line 50

def encode_attributes(attributes)
  encoded = {}
  attributes.each do |column_name, value|
    if value.nil?
      encoded[column_name] = nil
    else
      encoded[column_name] = attribute_definitions[column_name].type.encode(value)
    end
  end
  encoded
end

#insert_record(id, attributes) ⇒ Object



24
25
26
# File 'lib/superstore/persistence.rb', line 24

def insert_record(id, attributes)
  adapter.insert table_name, id, encode_attributes(attributes)
end

#instantiate(id, attributes) ⇒ Object



40
41
42
43
44
45
46
47
48
# File 'lib/superstore/persistence.rb', line 40

def instantiate(id, attributes)
  allocate.tap do |object|
    object.instance_variable_set("@id", id) if id
    object.instance_variable_set("@new_record", false)
    object.instance_variable_set("@destroyed", false)
    object.instance_variable_set("@attributes", typecast_persisted_attributes(attributes))
    object.instance_variable_set("@association_cache", {})
  end
end

#update_record(id, attributes) ⇒ Object



28
29
30
# File 'lib/superstore/persistence.rb', line 28

def update_record(id, attributes)
  adapter.update table_name, id, encode_attributes(attributes)
end