Class: Loco::Adapter

Inherits:
Object
  • Object
show all
Defined in:
lib/motion-loco/adapter.rb

Direct Known Subclasses

FixtureAdapter, RESTAdapter, SQLiteAdapter

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.get_transformsObject



73
74
75
76
77
78
79
80
81
# File 'lib/motion-loco/adapter.rb', line 73

def get_transforms
  if @transforms.nil?
    @transforms = {}
    if self.superclass.respond_to? :get_transforms
      @transforms.merge!(self.superclass.get_transforms)
    end
  end
  @transforms
end

.register_transform(name, transforms = {}) ⇒ Object Also known as: registerTransform



83
84
85
86
# File 'lib/motion-loco/adapter.rb', line 83

def register_transform(name, transforms={})
  @transforms = get_transforms
  @transforms[name.to_sym] = transforms
end

Instance Method Details

#create_record(record, &block) ⇒ Object

Raises:

  • (NoMethodError)


7
8
9
# File 'lib/motion-loco/adapter.rb', line 7

def create_record(record, &block)
  raise NoMethodError, "Loco::Adapter subclasses must implement #create_record(record, &block)."
end

#delete_record(record, &block) ⇒ Object

Raises:

  • (NoMethodError)


11
12
13
# File 'lib/motion-loco/adapter.rb', line 11

def delete_record(record, &block)
  raise NoMethodError, "Loco::Adapter subclasses must implement #delete_record(record, &block)."
end

#find(record, id, &block) ⇒ Object

Raises:

  • (NoMethodError)


15
16
17
# File 'lib/motion-loco/adapter.rb', line 15

def find(record, id, &block)
  raise NoMethodError, "Loco::Adapter subclasses must implement #find(record, id, &block)."
end

#find_all(type, records, &block) ⇒ Object

Raises:

  • (NoMethodError)


19
20
21
# File 'lib/motion-loco/adapter.rb', line 19

def find_all(type, records, &block)
  raise NoMethodError, "Loco::Adapter subclasses must implement #find_all(type, records, &block)."
end

#find_many(type, records, ids, &block) ⇒ Object

Raises:

  • (NoMethodError)


23
24
25
# File 'lib/motion-loco/adapter.rb', line 23

def find_many(type, records, ids, &block)
  raise NoMethodError, "Loco::Adapter subclasses must implement #find_many(type, records, ids, &block)."
end

#find_query(type, records, params, &block) ⇒ Object

Raises:

  • (NoMethodError)


27
28
29
# File 'lib/motion-loco/adapter.rb', line 27

def find_query(type, records, params, &block)
  raise NoMethodError, "Loco::Adapter subclasses must implement #find_query(type, records, params, &block)."
end

#serialize(record, options = {}, json = {}) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/motion-loco/adapter.rb', line 35

def serialize(record, options={}, json={})
  properties = record.class.get_class_properties.select{|prop| 
    if prop[:type]
      if prop[:name] == :id
        options[:include_id] || options[:includeId]
      else
        true
      end
    end
  }
  
  transforms = self.class.get_transforms
  
  properties.each do |property|
    key = property[:name].to_sym
    transform = transforms[property[:type]]
    if transform
      json[key] = transform[:serialize].call(record.valueForKey(key))
    else
      json[key] = record.valueForKey(key)
    end
  end
  
  if options[:root] != false
    if options[:root].nil? || options[:root] == true
      root = record.class.to_s.underscore.to_sym
    else
      root = options[:root].to_sym
    end
    temp = {}
    temp[root] = json
    json = temp
  end
  json
end

#update_record(record, &block) ⇒ Object

Raises:

  • (NoMethodError)


31
32
33
# File 'lib/motion-loco/adapter.rb', line 31

def update_record(record, &block)
  raise NoMethodError, "Loco::Adapter subclasses must implement #update_record(record, &block)."
end