Module: Redcord::Migration::Index
Overview
typed: strict
Instance Method Summary collapse
- #_del_set(model, key) ⇒ Object
- #_del_zset(model, key) ⇒ Object
- #_remove_index_from_attr_set(model:, attr_set_name:, index_name:) ⇒ Object
- #remove_custom_index(model, index_name) ⇒ Object
- #remove_index(model, index_name) ⇒ Object
Instance Method Details
#_del_set(model, key) ⇒ Object
39 40 41 42 43 44 45 46 |
# File 'lib/redcord/migration/index.rb', line 39 def _del_set(model, key) # Use SPOP here to minimize blocking loop do break unless model.redis.spop(key) end model.redis.del(key) end |
#_del_zset(model, key) ⇒ Object
49 50 51 52 53 54 55 56 |
# File 'lib/redcord/migration/index.rb', line 49 def _del_zset(model, key) # ZPOPMIN might not be avaliable on old redis servers model.redis.zscan_each(match: key) do |id, _| model.redis.zrem(key, id) end model.redis.del(key) end |
#_remove_index_from_attr_set(model:, attr_set_name:, index_name:) ⇒ Object
34 35 36 |
# File 'lib/redcord/migration/index.rb', line 34 def _remove_index_from_attr_set(model:, attr_set_name:, index_name:) model.redis.srem("#{model.model_key}:#{attr_set_name}", index_name) end |
#remove_custom_index(model, index_name) ⇒ Object
20 21 22 23 24 25 |
# File 'lib/redcord/migration/index.rb', line 20 def remove_custom_index(model, index_name) index_key = "#{model.model_key}:custom_index:#{index_name}" index_content_key = "#{model.model_key}:custom_index:#{index_name}_content" model.redis.scan_each_shard("#{index_key}*") { |key| model.redis.unlink(key) } model.redis.scan_each_shard("#{index_content_key}*") { |key| model.redis.unlink(key) } end |
#remove_index(model, index_name) ⇒ Object
9 10 11 12 13 14 15 16 17 |
# File 'lib/redcord/migration/index.rb', line 9 def remove_index(model, index_name) model.redis.scan_each_shard("#{model.model_key}:#{index_name}:*") { |key| _del_set(model, key) } attr_set = "#{model.model_key}:#{index_name}" nil_attr_set = "#{attr_set}:" model.redis.scan_each_shard("#{nil_attr_set}*") { |key| _del_set(model, key) } model.redis.scan_each_shard("#{attr_set}*") { |key| _del_zset(model, key) } end |