20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/query_dam/concerns/trackable.rb', line 20
def update_queries
queries.each do |tracking_key, query|
result = self.class.connection.select_values(query).map(&:to_i)
added = result - @_prior_results[tracking_key]
removed = @_prior_results[tracking_key] - result
additions_set, updates_set, removals_set =
QueryDam.query_sets(tracking_key)
updates_set.add(id) if result.include?(id)
added.each do |record_id|
if removals_set.member?(record_id)
removals_set.delete(record_id)
else
additions_set.add(record_id)
end
end
removed.each do |record_id|
updates_set.delete(record_id)
if additions_set.member?(record_id)
additions_set.delete(record_id)
else
removals_set.add(record_id)
end
end
[additions_set, updates_set, removals_set]
.each { |set| set.expire(QueryDam.expiration) }
end
end
|