module Redcord::Migration::Index
typed: strict
Public Instance Methods
_del_set(model, key)
click to toggle source
# 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)
click to toggle source
# 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:)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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