From cb1f909fa4e4edb7b9d05c296ee090c30aecbd95 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Fri, 15 Mar 2019 13:55:27 +0800 Subject: [PATCH] FIX: Migrate old null override for upload site settings. For some reason, setting a text site setting to empty in the past can result in either an empty string or null as the value. This migration is a follow up to 1981add261aacc279c26f5e684ae4a080607e73f. --- ..._null_override_for_upload_site_settings.rb | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 db/migrate/20190315055432_migrate_null_override_for_upload_site_settings.rb diff --git a/db/migrate/20190315055432_migrate_null_override_for_upload_site_settings.rb b/db/migrate/20190315055432_migrate_null_override_for_upload_site_settings.rb new file mode 100644 index 0000000000..bbc47802a6 --- /dev/null +++ b/db/migrate/20190315055432_migrate_null_override_for_upload_site_settings.rb @@ -0,0 +1,40 @@ +class MigrateNullOverrideForUploadSiteSettings < ActiveRecord::Migration[5.2] + def up + { + 'logo_url' => 'logo', + 'logo_small_url' => 'logo_small', + 'digest_logo_url' => 'digest_logo', + 'mobile_logo_url' => 'mobile_logo', + 'large_icon_url' => 'large_icon', + 'favicon_url' => 'favicon', + 'apple_touch_icon_url' => 'apple_touch_icon', + 'default_opengraph_image_url' => 'opengraph_image', + 'twitter_summary_large_image_url' => 'twitter_summary_large_image', + 'push_notifications_icon_url' => 'push_notifications_icon' + }.each do |old_name, new_name| + if DB.query_single("SELECT 1 FROM site_settings WHERE name = '#{old_name}' AND value IS NULL").present? && + DB.query_single("SELECT 1 FROM site_settings WHERE name = '#{new_name}'").empty? + + ActiveRecord::Base.connection.execute <<~SQL + INSERT INTO site_settings ( + name, + data_type, + value, + created_at, + updated_at + ) VALUES ( + '#{new_name}', + 18, + '', + CURRENT_TIMESTAMP, + CURRENT_TIMESTAMP + ) + SQL + end + end + end + + def down + raise ActiveRecord::IrreversibleMigration + end +end