]> git.openstreetmap.org Git - rails.git/blob - lib/tasks/remove_invalid_avatars.rake
Merge remote-tracking branch 'upstream/pull/7491'
[rails.git] / lib / tasks / remove_invalid_avatars.rake
1 # frozen_string_literal: true
2
3 namespace :db do
4   desc "Remove invalid avatars from users"
5   task :remove_invalid_avatars => :environment do
6     chunk_size = ENV["CHUNK_SIZE"]&.to_i || 10_000
7
8     min_id = ENV["MIN_USER"]&.to_i || User.minimum(:id)
9     max_id = ENV["MAX_USER"]&.to_i || User.maximum(:id)
10
11     User.where(:id => min_id..max_id)
12         .joins(:avatar_attachment)
13         .in_batches(:of => chunk_size) do |batch|
14       ids = batch.ids
15
16       puts "Processing users #{ids.first} to #{ids.last} ..."
17
18       batch.each do |user|
19         if user.invalid? && user.errors.include?(:avatar)
20           puts "Purging invalid image for user #{user.id}"
21           user.avatar.purge_later
22         end
23       end
24     end
25   end
26 end