diff --git a/app/tasks/maintenance/recompute_blob_checksum_task.rb b/app/tasks/maintenance/recompute_blob_checksum_task.rb new file mode 100644 index 000000000..628ea9bd7 --- /dev/null +++ b/app/tasks/maintenance/recompute_blob_checksum_task.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module Maintenance + class RecomputeBlobChecksumTask < MaintenanceTasks::Task + attribute :blob_ids, :string + validates :blob_ids, presence: true + + def collection + ids = blob_ids.split(',').map(&:strip).map(&:to_i) + ActiveStorage::Blob.where(id: ids) + end + + def process(blob) + blob.upload(StringIO.new(blob.download), identify: false) + blob.save! + end + + def count + # Optionally, define the number of rows that will be iterated over + # This is used to track the task's progress + end + end +end