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
|