create multiple fingerprints wip
This commit is contained in:
36
Rakefile
36
Rakefile
@@ -503,3 +503,39 @@ task clear_e621_user_favs_migrated_at: :environment do
|
||||
# pb.progress += b.size
|
||||
# end
|
||||
end
|
||||
|
||||
task create_post_file_fingerprints: :environment do
|
||||
def migrate_posts_for_user(user)
|
||||
puts "migrating posts for #{user.to_param}"
|
||||
pb =
|
||||
ProgressBar.create(
|
||||
total: user.posts.count,
|
||||
format: "%t: %c/%C %B %p%% %a %e",
|
||||
)
|
||||
user
|
||||
.posts
|
||||
.includes(files: :blob)
|
||||
.find_in_batches(batch_size: 16) do |batch|
|
||||
ReduxApplicationRecord.transaction do
|
||||
batch.each do |post|
|
||||
post.files.each { |file| file.ensure_fingerprint! }
|
||||
puts "migrated #{post.id} / #{post.to_param} / '#{post.title_for_view}'"
|
||||
pb.progress = [pb.progress + 1, pb.total].min
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if ENV["user"].present?
|
||||
for_user = ENV["user"] || raise("need 'user'")
|
||||
user = DomainController.find_model_from_param(Domain::User, for_user)
|
||||
raise "user '#{for_user}' not found" unless user
|
||||
migrate_posts_for_user(user)
|
||||
elsif ENV["users_descending"].present?
|
||||
# all users with posts, ordered by post count descending
|
||||
users = Domain::User::FaUser.order(num_watched_by: :desc).limit(20)
|
||||
users.find_each(batch_size: 1) { |user| migrate_posts_for_user(user) }
|
||||
else
|
||||
raise "need 'user' or 'users_descending'"
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user