Class: Card::Rule::PreferenceCache

Inherits:
Cache show all
Defined in:
card/lib/card/rule/preference_cache.rb

Constant Summary collapse

USER_ID_CACHE_KEY =
"USER_IDS".freeze

Class Method Summary collapse

Methods inherited from Cache

read

Class Method Details

.clearObject



55
56
57
58
# File 'card/lib/card/rule/preference_cache.rb', line 55

def clear
  super
  Card.cache.write USER_ID_CACHE_KEY, nil
end

.lookup_key(row) ⇒ Object



66
67
68
69
70
# File 'card/lib/card/rule/preference_cache.rb', line 66

def lookup_key row
  return unless (base = lookup_key_without_user row)

  "#{base}+#{row['user_id']}"
end

.lookup_key_without_userObject



64
# File 'card/lib/card/rule/preference_cache.rb', line 64

alias_method :lookup_key_without_user, :lookup_key

.populateObject



35
36
37
38
39
40
41
# File 'card/lib/card/rule/preference_cache.rb', line 35

def populate
  @rows = nil
  super.tap do
    populate_user_ids
    @rows = nil
  end
end

.populate_user_idsObject



43
44
45
# File 'card/lib/card/rule/preference_cache.rb', line 43

def populate_user_ids
  Card.cache.write USER_ID_CACHE_KEY, user_id_hash
end

.rowsObject



60
61
62
# File 'card/lib/card/rule/preference_cache.rb', line 60

def rows
  @rows ||= super
end

.user_id_hashObject



47
48
49
50
51
52
53
# File 'card/lib/card/rule/preference_cache.rb', line 47

def user_id_hash
  rows.each_with_object({}) do |row, hash|
    key = lookup_key_without_user row
    hash[key] ||= []
    hash[key] << row["user_id"]
  end
end

.user_idsObject



31
32
33
# File 'card/lib/card/rule/preference_cache.rb', line 31

def user_ids
  Card.cache.read(USER_ID_CACHE_KEY) || (populate && user_ids)
end