uploads: fix media_asset_count.
This commit is contained in:
@@ -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
|
||||
|
||||
27
script/fixes/101_fix_media_asset_count.rb
Executable file
27
script/fixes/101_fix_media_asset_count.rb
Executable 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
|
||||
Reference in New Issue
Block a user