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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user