diff --git a/db/migrate/20190424065841_add_post_image_indexes.rb b/db/migrate/20190424065841_add_post_image_indexes.rb new file mode 100644 index 00000000000..eb1e4aa07a8 --- /dev/null +++ b/db/migrate/20190424065841_add_post_image_indexes.rb @@ -0,0 +1,24 @@ +class AddPostImageIndexes < ActiveRecord::Migration[5.2] + def change + + %w{ + large_images + broken_images + downloaded_images + }.each do |field| + + execute <<~SQL + DELETE FROM post_custom_fields f + WHERE name = '#{field}' AND id > ( + SELECT MIN(f2.id) FROM post_custom_fields f2 + WHERE f2.post_id = f.post_id AND f2.name = f.name + ) + SQL + + add_index :post_custom_fields, [:post_id], + name: "post_custom_field_#{field}_idx", + unique: true, + where: "name = '#{field}'" + end + end +end