diff --git a/db/migrate/20250911163952_fill_default_quote_policy_setting.rb b/db/migrate/20250911163952_fill_default_quote_policy_setting.rb new file mode 100644 index 000000000..c3d08e68c --- /dev/null +++ b/db/migrate/20250911163952_fill_default_quote_policy_setting.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +class FillDefaultQuotePolicySetting < ActiveRecord::Migration[8.0] + disable_ddl_transaction! + + # Dummy classes, to make migration possible across version changes + class User < ApplicationRecord; end + + def up + User.where.not(settings: nil).find_each do |user| + settings = Oj.load(user.attributes_before_type_cast['settings']) + next if settings.nil? + + should_update_settings = false + + if settings['notification_emails.quote'].blank? && settings['notification_emails.reblog'] == false && settings['notification_emails.mention'] == false + settings['notification_emails.quote'] = false + should_update_settings = true + end + + if settings['default_privacy'] == 'private' && settings['default_quote_policy'] != 'nobody' + settings['default_quote_policy'] = 'nobody' + should_update_settings = true + elsif settings['default_quote_policy'].nil? && settings['default_privacy'] == 'unlisted' + settings['default_quote_policy'] = 'followers' + should_update_settings = true + end + + user.update_column('settings', Oj.dump(settings)) if should_update_settings + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 61d9a4976..583ea9000 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[8.0].define(version: 2025_09_09_100506) do +ActiveRecord::Schema[8.0].define(version: 2025_09_11_163952) do # These are extensions that must be enabled in order to support this database enable_extension "pg_catalog.plpgsql"