14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/database_recorder/active_record/recorder.rb', line 14
def record(adapter, sql, name = 'SQL', binds = [], type_casted_binds = [], *args)
return yield if ignore_query?(sql, name)
Core.log_query(sql, name)
if Config.replay_recordings && Recording.from_cache
Recording.push(sql: sql, binds: binds)
data = Recording.cached_query_for(sql)
return yield if !data || !data[:result]
RecordedResult.new(data[:result][:fields], data[:result][:values])
else
yield.tap do |result|
result_data =
if result && (result.respond_to?(:fields) || result.respond_to?(:columns))
fields = result.respond_to?(:fields) ? result.fields : result.columns
values = result.respond_to?(:values) ? result.values : result.to_a
{ count: result.count, fields: fields, values: values }
end
Recording.push(sql: sql, name: name, binds: type_casted_binds, result: result_data)
end
end
end
|