decko-commons/decko

View on GitHub
card/lib/card/rule/read_rule_cache.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
class Card
  module Rule
    class ReadRuleCache < Cache
      self.sql = %(
        SELECT
          refs.referee_id AS party_id,
          read_rules.id   AS read_rule_id
        FROM cards read_rules
        JOIN card_references refs ON refs.referer_id    = read_rules.id
        JOIN cards sets           ON read_rules.left_id = sets.id
        WHERE read_rules.right_id = #{ReadID}
          AND       sets.type_id  = #{SetID}
          AND read_rules.trash is false
          AND       sets.trash is false;
      ).freeze

      self.cache_key = "READRULES".freeze

      class << self
        def lookup_hash
          rows.each_with_object({}) do |row, h|
            party_id = row["party_id"].to_i
            h[party_id] ||= []
            h[party_id] << row["read_rule_id"].to_i
          end
        end
      end
    end
  end
end