create multiple fingerprints wip

This commit is contained in:
Dylan Knutson
2025-03-09 20:33:49 +00:00
parent 99809041a5
commit a209c64149
70 changed files with 4641 additions and 812 deletions

View File

@@ -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