refactor(virus_scan_result): use column instead of metadata on blob
This commit is contained in:
parent
d469bca0ae
commit
6e18090fb3
17 changed files with 80 additions and 47 deletions
|
@ -0,0 +1,32 @@
|
|||
namespace :after_party do
|
||||
desc 'Deployment task: backfill_virus_scan_blobs'
|
||||
task backfill_virus_scan_blobs: :environment do
|
||||
puts "Running deploy task 'backfill_virus_scan_blobs'"
|
||||
|
||||
pending_blobs = ActiveStorage::Blob.where("metadata like '%\"virus_scan_result\":\"#{ActiveStorage::VirusScanner::PENDING}%'").where(virus_scan_result: nil)
|
||||
infected_blobs = ActiveStorage::Blob.where("metadata like '%\"virus_scan_result\":\"#{ActiveStorage::VirusScanner::INFECTED}%'").where(virus_scan_result: nil)
|
||||
integrity_error_blobs = ActiveStorage::Blob.where("metadata like '%\"virus_scan_result\":\"#{ActiveStorage::VirusScanner::INTEGRITY_ERROR}%'").where(virus_scan_result: nil)
|
||||
safe_blobs = ActiveStorage::Blob.where("metadata like '%\"virus_scan_result\":\"#{ActiveStorage::VirusScanner::SAFE}%'").where(virus_scan_result: nil)
|
||||
|
||||
pp "pending blobs: #{pending_blobs.count}"
|
||||
pp "infected blobs: #{infected_blobs.count}"
|
||||
pp "with integrity error blobs: #{integrity_error_blobs.count}"
|
||||
|
||||
pending_blobs.in_batches.update_all(virus_scan_result: ActiveStorage::VirusScanner::PENDING)
|
||||
infected_blobs.in_batches.update_all(virus_scan_result: ActiveStorage::VirusScanner::INFECTED)
|
||||
integrity_error_blobs.in_batches.update_all(virus_scan_result: ActiveStorage::VirusScanner::INTEGRITY_ERROR)
|
||||
|
||||
safe_blobs_ids = safe_blobs.pluck(:id)
|
||||
progress = ProgressReport.new(safe_blobs_ids.size)
|
||||
safe_blobs_ids.in_groups_of(10_000) do |batch|
|
||||
Migrations::BackfillVirusScanBlobsJob.perform_later(batch.compact)
|
||||
progress.inc(batch.compact.size)
|
||||
end
|
||||
progress.finish
|
||||
|
||||
# Update task as completed. If you remove the line below, the task will
|
||||
# run with every deploy (or every time you call after_party:run).
|
||||
AfterParty::TaskRecord
|
||||
.create version: AfterParty::TaskRecorder.new(__FILE__).timestamp
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue