71 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| class ExportSummary
 | |
|   attr_reader :account, :counts
 | |
| 
 | |
|   delegate(
 | |
|     :blocking,
 | |
|     :bookmarks,
 | |
|     :domain_blocks,
 | |
|     :owned_lists,
 | |
|     :media_attachments,
 | |
|     :muting,
 | |
|     to: :account,
 | |
|     prefix: true
 | |
|   )
 | |
| 
 | |
|   def initialize(account)
 | |
|     @account = account
 | |
|     @counts = populate_counts
 | |
|   end
 | |
| 
 | |
|   def total_blocks
 | |
|     counts[:blocks].value
 | |
|   end
 | |
| 
 | |
|   def total_bookmarks
 | |
|     counts[:bookmarks].value
 | |
|   end
 | |
| 
 | |
|   def total_domain_blocks
 | |
|     counts[:domain_blocks].value
 | |
|   end
 | |
| 
 | |
|   def total_followers
 | |
|     account.followers_count
 | |
|   end
 | |
| 
 | |
|   def total_follows
 | |
|     account.following_count
 | |
|   end
 | |
| 
 | |
|   def total_lists
 | |
|     counts[:owned_lists].value
 | |
|   end
 | |
| 
 | |
|   def total_mutes
 | |
|     counts[:muting].value
 | |
|   end
 | |
| 
 | |
|   def total_statuses
 | |
|     account.statuses_count
 | |
|   end
 | |
| 
 | |
|   def total_storage
 | |
|     counts[:storage].value
 | |
|   end
 | |
| 
 | |
|   private
 | |
| 
 | |
|   def populate_counts
 | |
|     {
 | |
|       blocks: account_blocking.async_count,
 | |
|       bookmarks: account_bookmarks.async_count,
 | |
|       domain_blocks: account_domain_blocks.async_count,
 | |
|       owned_lists: account_owned_lists.async_count,
 | |
|       muting: account_muting.async_count,
 | |
|       storage: account_media_attachments.async_sum(:file_file_size),
 | |
|     }
 | |
|   end
 | |
| end
 |