13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/backframe/response/adapter/json.rb', line 13
def render(collection, fields)
data = {
records: [],
total_records: collection.total_records,
current_page: collection.current_page,
total_pages: collection.total_pages
}
collection.records.each do |item|
serialized = ActiveModelSerializers::SerializableResource.new(item).serializable_hash
if fields.any?
record = {}
fields.array.each do |field|
obj = record
parts = field[:key].split(".")
value = Backframe::Response::Record.get_value(serialized, field[:key])
parts.each_with_index do |part, index|
if index == parts.size - 1
obj[part.to_sym] = value
else
obj[part.to_sym] ||= {}
obj = obj[part.to_sym]
end
end
end
data[:records] << record
else
data[:records] << serialized
end
end
data
end
|