uploads: fix media_asset_count.

This commit is contained in:
evazion
2022-02-12 13:12:33 -06:00
parent 117d31e633
commit 9a23970ab1
2 changed files with 28 additions and 1 deletions

View File

@@ -100,7 +100,7 @@ class Upload < ApplicationRecord
end
media_asset = MediaAsset.upload!(media_file)
update!(media_assets: [media_asset], status: "completed")
update!(media_assets: [media_asset], status: "completed", media_asset_count: 1)
rescue Exception => e
update!(status: "error", error: e.message)
end

View File

@@ -0,0 +1,27 @@
#!/usr/bin/env ruby
require_relative "base"
with_confirmation do
# Fix uploads that have a non-zero media_asset_count but no media assets.
records = Upload.where("media_asset_count != 0").where.not(id: UploadMediaAsset.select(:upload_id).distinct)
puts "Fixing #{records.size} records"
records.update_all(media_asset_count: 0)
end
with_confirmation do
# Fix uploads that have a media_asset_count inconsistent with the upload_media_assets table.
records = Upload.find_by_sql(<<~SQL.squish)
UPDATE uploads
SET media_asset_count = true_count
FROM (
SELECT upload_id, COUNT(*) AS true_count
FROM upload_media_assets
GROUP BY upload_id
) true_counts
WHERE uploads.id = upload_id AND uploads.media_asset_count != true_count
RETURNING uploads.*
SQL
puts "Fixing #{records.size} records"
end