module QueryDam::Trackable
Public Instance Methods
get_prior_results()
click to toggle source
# File lib/query_dam/concerns/trackable.rb, line 11 def get_prior_results @_prior_results = {} queries.each do |tracking_key, query| @_prior_results[tracking_key] = self.class.connection.select_values(query).map(&:to_i) end end
queries()
click to toggle source
# File lib/query_dam/concerns/trackable.rb, line 54 def queries queries_set = Redis::Set.new(self.class.name) queries_set.members.reduce({}) do |acc, tracking_key| query_hash = Redis::HashKey.new(tracking_key) if query_hash.exists? acc.merge(tracking_key => query_hash[:query]) else queries_set.delete(tracking_key) acc end end end
update_queries()
click to toggle source
# 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