30 lines
		
	
	
		
			811 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			811 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # 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
 |