You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
811 B
29 lines
811 B
# frozen_string_literal: true |
|
|
|
class Instance |
|
include ActiveModel::Model |
|
|
|
attr_accessor :domain, :accounts_count, :domain_block |
|
|
|
def initialize(resource) |
|
@domain = resource.domain |
|
@accounts_count = resource.is_a?(DomainBlock) ? nil : resource.accounts_count |
|
@domain_block = resource.is_a?(DomainBlock) ? resource : DomainBlock.find_by(domain: domain) |
|
end |
|
|
|
def cached_sample_accounts |
|
Rails.cache.fetch("#{cache_key}/sample_accounts", expires_in: 12.hours) { Account.where(domain: domain).searchable.joins(:account_stat).popular.limit(3) } |
|
end |
|
|
|
def cached_accounts_count |
|
@accounts_count || Rails.cache.fetch("#{cache_key}/count", expires_in: 12.hours) { Account.where(domain: domain).count } |
|
end |
|
|
|
def to_param |
|
domain |
|
end |
|
|
|
def cache_key |
|
domain |
|
end |
|
end
|
|
|