Module: QueryDam
- Defined in:
- lib/query_dam.rb,
lib/query_dam/version.rb,
lib/query_dam/concerns/trackable.rb
Defined Under Namespace
Modules: Trackable
Constant Summary collapse
- QUERY_EXPIRE =
5.minutes
- VERSION =
'0.1.2'
Class Method Summary collapse
Class Method Details
.get_updates(key) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/query_dam.rb', line 23 def get_updates(key) query_hash = Redis::HashKey.new(key) return nil unless query_hash.exists? model = query_hash[:model].constantize updated_ids = (additions_set(key).members + updates_set(key).members).uniq removed_ids = removals_set(key).members result = { model: model, updates: model.where(id: updated_ids), exclusions: removed_ids.map(&:to_i) } additions_set(key).clear updates_set(key).clear removals_set(key).clear result end |
.watch_relation(relation) ⇒ Object
13 14 15 16 17 18 19 20 21 |
# File 'lib/query_dam.rb', line 13 def watch_relation(relation) key = SecureRandom.uuid query = relation.select("`#{relation.model.table_name}`.`id`").to_sql query_hash = Redis::HashKey.new(key) query_hash.bulk_set(model: relation.model.name, query: query) # query_hash.expire(QUERY_EXPIRE) Redis::Set.new(relation.model.name) << key key end |