Add optional domain restrict to tootctl accounts cull (#16511)
* Add optional domain restrict to accounts cull * Use "unless" - codeclimate
This commit is contained in:
parent
a8ef6d24d8
commit
3f5f4273b3
|
@ -287,7 +287,7 @@ module Mastodon
|
||||||
|
|
||||||
option :concurrency, type: :numeric, default: 5, aliases: [:c]
|
option :concurrency, type: :numeric, default: 5, aliases: [:c]
|
||||||
option :dry_run, type: :boolean
|
option :dry_run, type: :boolean
|
||||||
desc 'cull', 'Remove remote accounts that no longer exist'
|
desc 'cull [DOMAIN...]', 'Remove remote accounts that no longer exist'
|
||||||
long_desc <<-LONG_DESC
|
long_desc <<-LONG_DESC
|
||||||
Query every single remote account in the database to determine
|
Query every single remote account in the database to determine
|
||||||
if it still exists on the origin server, and if it doesn't,
|
if it still exists on the origin server, and if it doesn't,
|
||||||
|
@ -296,12 +296,15 @@ module Mastodon
|
||||||
Accounts that have had confirmed activity within the last week
|
Accounts that have had confirmed activity within the last week
|
||||||
are excluded from the checks.
|
are excluded from the checks.
|
||||||
LONG_DESC
|
LONG_DESC
|
||||||
def cull
|
def cull(*domains)
|
||||||
skip_threshold = 7.days.ago
|
skip_threshold = 7.days.ago
|
||||||
dry_run = options[:dry_run] ? ' (DRY RUN)' : ''
|
dry_run = options[:dry_run] ? ' (DRY RUN)' : ''
|
||||||
skip_domains = Concurrent::Set.new
|
skip_domains = Concurrent::Set.new
|
||||||
|
|
||||||
processed, culled = parallelize_with_progress(Account.remote.where(protocol: :activitypub).partitioned) do |account|
|
query = Account.remote.where(protocol: :activitypub)
|
||||||
|
query = query.where(domain: domains) unless domains.empty?
|
||||||
|
|
||||||
|
processed, culled = parallelize_with_progress(query.partitioned) do |account|
|
||||||
next if account.updated_at >= skip_threshold || (account.last_webfingered_at.present? && account.last_webfingered_at >= skip_threshold) || skip_domains.include?(account.domain)
|
next if account.updated_at >= skip_threshold || (account.last_webfingered_at.present? && account.last_webfingered_at >= skip_threshold) || skip_domains.include?(account.domain)
|
||||||
|
|
||||||
code = 0
|
code = 0
|
||||||
|
|
Loading…
Reference in New Issue