module Card::Rule

Optimized handling of card “rules” (Set+Setting) and preferences.

Public Class Methods

all_user_ids_with_rule_for(set_card, setting_code) click to toggle source
# File lib/card/rule.rb, line 47
def all_user_ids_with_rule_for set_card, setting_code
  cache_key = "#{set_card.rule_cache_key_base}+#{setting_code}"
  user_ids = PreferenceCache.user_ids[cache_key] || []
  user_ids.include?(AllID) ? all_user_ids : user_ids
end
clear_preference_cache() click to toggle source
# File lib/card/rule.rb, line 31
def clear_preference_cache
  PreferenceCache.clear
end
clear_read_rule_cache() click to toggle source
# File lib/card/rule.rb, line 35
def clear_read_rule_cache
  ReadRuleCache.clear
end
clear_rule_cache() click to toggle source
# File lib/card/rule.rb, line 27
def clear_rule_cache
  Cache.clear
end
global_setting(name) click to toggle source
# File lib/card/rule.rb, line 5
def global_setting name
  Auth.as_bot do
    (card = Card[name]) && !card.db_content.strip.empty? && card.db_content
  end
end
preference_cache() click to toggle source
# File lib/card/rule.rb, line 19
def preference_cache
  PreferenceCache.read
end
preference_names(user_name, setting_code) click to toggle source
# File lib/card/rule.rb, line 39
def preference_names user_name, setting_code
  Card.search({ right: { codename: setting_code },
                left: { left: { type_id: SetID },
                        right: user_name },
                return: :name },
              "preference cards for user: #{user_name}")
end
read_rule_cache() click to toggle source
# File lib/card/rule.rb, line 23
def read_rule_cache
  ReadRuleCache.read
end
rule_cache() click to toggle source
# File lib/card/rule.rb, line 15
def rule_cache
  Cache.read
end
toggle(val) click to toggle source
# File lib/card/rule.rb, line 11
def toggle val
  val.to_s.strip == "1"
end

Private Class Methods

all_user_ids() click to toggle source
# File lib/card/rule.rb, line 55
def all_user_ids
  Card.where(type_id: UserID).pluck :id
end