parent
01d6f7529f
commit
3dcba94e68
6 changed files with 103 additions and 17 deletions
@ -0,0 +1,57 @@ |
|||||||
|
# frozen_string_literal: true |
||||||
|
|
||||||
|
class MoveGlitchUserSettings < ActiveRecord::Migration[6.1] |
||||||
|
class User < ApplicationRecord; end |
||||||
|
|
||||||
|
MAPPING = { |
||||||
|
favourite_modal: 'web.favourite_modal', |
||||||
|
system_emoji_font: 'web.use_system_emoji_font', |
||||||
|
hide_followers_count: 'hide_followers_count', |
||||||
|
default_content_type: 'default_content_type', |
||||||
|
flavour: 'flavour', |
||||||
|
skin: 'skin', |
||||||
|
notification_emails: { |
||||||
|
trending_link: 'notification_emails.link_trends', |
||||||
|
trending_status: 'notification_emails.status_trends', |
||||||
|
}.freeze, |
||||||
|
}.freeze |
||||||
|
|
||||||
|
class LegacySetting < ApplicationRecord |
||||||
|
self.table_name = 'settings' |
||||||
|
|
||||||
|
def var |
||||||
|
self[:var]&.to_sym |
||||||
|
end |
||||||
|
|
||||||
|
def value |
||||||
|
YAML.safe_load(self[:value], permitted_classes: [ActiveSupport::HashWithIndifferentAccess]) if self[:value].present? |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
def up |
||||||
|
User.find_each do |user| |
||||||
|
previous_settings = LegacySetting.where(thing_type: 'User', thing_id: user.id).index_by(&:var) |
||||||
|
|
||||||
|
user_settings = Oj.load(user.settings || '{}') |
||||||
|
user_settings.delete('theme') |
||||||
|
|
||||||
|
MAPPING.each do |legacy_key, new_key| |
||||||
|
value = previous_settings[legacy_key]&.value |
||||||
|
|
||||||
|
next if value.blank? |
||||||
|
|
||||||
|
if value.is_a?(Hash) |
||||||
|
value.each do |nested_key, nested_value| |
||||||
|
user_settings[MAPPING[legacy_key][nested_key.to_sym]] = nested_value |
||||||
|
end |
||||||
|
else |
||||||
|
user_settings[new_key] = value |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
user.update_column('settings', Oj.dump(user_settings)) # rubocop:disable Rails/SkipsModelValidations |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
def down; end |
||||||
|
end |
Loading…
Reference in new issue