2017-06-01 03:38:44 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
class Instance
|
|
|
|
include ActiveModel::Model
|
|
|
|
|
2019-01-08 21:39:49 +09:00
|
|
|
attr_accessor :domain, :accounts_count, :domain_block
|
2017-06-01 03:38:44 +09:00
|
|
|
|
2019-01-08 21:39:49 +09:00
|
|
|
def initialize(resource)
|
|
|
|
@domain = resource.domain
|
2019-03-26 08:36:35 +09:00
|
|
|
@accounts_count = resource.is_a?(DomainBlock) ? nil : resource.accounts_count
|
2019-06-22 07:13:10 +09:00
|
|
|
@domain_block = resource.is_a?(DomainBlock) ? resource : DomainBlock.rule_for(domain)
|
2019-01-08 21:39:49 +09:00
|
|
|
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
|
|
|
|
|
2019-03-26 08:36:35 +09:00
|
|
|
def cached_accounts_count
|
|
|
|
@accounts_count || Rails.cache.fetch("#{cache_key}/count", expires_in: 12.hours) { Account.where(domain: domain).count }
|
|
|
|
end
|
|
|
|
|
2019-01-08 21:39:49 +09:00
|
|
|
def to_param
|
|
|
|
domain
|
|
|
|
end
|
|
|
|
|
|
|
|
def cache_key
|
|
|
|
domain
|
2017-06-01 03:38:44 +09:00
|
|
|
end
|
|
|
|
end
|