Sha256: 28f160f0e0a7f332bb7df70725a80129f9cec6dd4d7253216e15861185962873

Contents?: true

Size: 838 Bytes

Versions: 8

Compression:

Stored size: 838 Bytes

Contents

class << self
  CACHE_KEY = "ROLEHASH".freeze

  def load_rolehash
    ::Card.cache.fetch(CACHE_KEY) do
      generate_rolehash
    end
  end

  def generate_rolehash
    Auth.as_bot do
      Card.search(left: { type_id: Card::RoleID }, right_id: Card::MembersID)
          .each_with_object({}) do |member_card, hash|
        hash[member_card.left_id] = ::Set.new member_card.item_ids
      end
    end
  end

  def update_rolehash role_id, member_ids
    role_hash[role_id] = member_ids
    ::Card.cache.write CACHE_KEY, role_hash
  end

  def clear_rolehash
    @role_hash = nil
  end

  def role_hash
    @role_hash ||= load_rolehash
  end

  def role_ids user_id
    role_hash.each_with_object([]) do |(role_id, member_ids), all_role_ids|
      next unless member_ids.include? user_id
      all_role_ids << role_id
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
card-mod-account-0.15.6 set/self/role.rb
card-mod-account-0.15.5 set/self/role.rb
card-mod-account-0.15.4 set/self/role.rb
card-mod-account-0.15.3 set/self/role.rb
card-mod-account-0.15.2.pre1 set/self/role.rb
card-mod-account-0.15.1.1 set/self/role.rb
card-mod-account-0.15.1 set/self/role.rb
card-mod-account-0.15.0 set/self/role.rb