Merge branch 'main' into glitch-soc/merge-upstream
Conflicts: - `README.md`: Upstream added a link to the roadmap, but we have a completely different README. Kept ours. - `app/models/media_attachment.rb`: Upstream upped media attachment limits. Updated the default according to upstream's. - `db/migrate/20180831171112_create_bookmarks.rb`: Upstream changed the migration compatibility level. Did so too. - `config/initializers/content_security_policy.rb`: Upstream refactored this file but we have a different version. Kept our version. - `app/controllers/settings/preferences_controller.rb`: Upstream completely refactored user settings storage, and glitch-soc has a different set of settings. The file does not directly references individual settings anymore. Applied upstream changes. - `app/lib/user_settings_decorator.rb`: Upstream completely refactored user settings storage, and glitch-soc has a different set of settings. The file got removed entirely. Removed it as well. - `app/models/user.rb`: Upstream completely refactored user settings storage, and glitch-soc has a different set of settings. References to individual settings have been removed from the file. Removed them as well. - `app/views/settings/preferences/appearance/show.html.haml`: Upstream completely refactored user settings storage, and glitch-soc has a different set of settings. Applied upstream's changes and ported ours back. - `app/views/settings/preferences/notifications/show.html.haml`: Upstream completely refactored user settings storage, and glitch-soc has a different set of settings. Applied upstream's changes and ported ours back. - `app/views/settings/preferences/other/show.html.haml`: Upstream completely refactored user settings storage, and glitch-soc has a different set of settings. Applied upstream's changes and ported ours back. - `config/settings.yml`: Upstream completely refactored user settings storage, and glitch-soc has a different set of settings. In particular, upstream removed user-specific and unused settings. Did the same in glitch-soc. - `spec/controllers/application_controller_spec.rb`: Conflicts due to glitch-soc's theming system. Mostly kept our version, as upstream messed up the tests.
This commit is contained in:
@ -1,7 +1,9 @@
|
||||
require Rails.root.join('lib', 'mastodon', 'migration_helpers')
|
||||
require_relative '../../lib/mastodon/migration_helpers'
|
||||
require_relative '../../lib/mastodon/migration_warning'
|
||||
|
||||
class IdsToBigints < ActiveRecord::Migration[5.1]
|
||||
include Mastodon::MigrationHelpers
|
||||
include Mastodon::MigrationWarning
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
@ -69,24 +71,12 @@ class IdsToBigints < ActiveRecord::Migration[5.1]
|
||||
]
|
||||
included_columns << [:deprecated_preview_cards, :id] if table_exists?(:deprecated_preview_cards)
|
||||
|
||||
# Print out a warning that this will probably take a while.
|
||||
if $stdout.isatty
|
||||
say ''
|
||||
say 'WARNING: This migration may take a *long* time for large instances'
|
||||
say 'It will *not* lock tables for any significant time, but it may run'
|
||||
say 'for a very long time. We will pause for 10 seconds to allow you to'
|
||||
say 'interrupt this migration if you are not ready.'
|
||||
say ''
|
||||
say 'This migration has some sections that can be safely interrupted'
|
||||
say 'and restarted later, and will tell you when those are occurring.'
|
||||
say ''
|
||||
say 'For more information, see https://github.com/mastodon/mastodon/pull/5088'
|
||||
migration_duration_warning(<<~EXPLANATION)
|
||||
This migration has some sections that can be safely interrupted
|
||||
and restarted later, and will tell you when those are occurring.
|
||||
|
||||
10.downto(1) do |i|
|
||||
say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
|
||||
sleep 1
|
||||
end
|
||||
end
|
||||
For more information, see https://github.com/mastodon/mastodon/pull/5088
|
||||
EXPLANATION
|
||||
|
||||
tables = included_columns.map(&:first).uniq
|
||||
table_sizes = {}
|
||||
|
@ -1,4 +1,4 @@
|
||||
class AddDescriptionToMediaAttachments < ActiveRecord::Migration[5.1]
|
||||
class AddDescriptionToMediaAttachments < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
add_column :media_attachments, :description, :text
|
||||
end
|
||||
|
@ -1,4 +1,4 @@
|
||||
class CreateEmailDomainBlocks < ActiveRecord::Migration[5.1]
|
||||
class CreateEmailDomainBlocks < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :email_domain_blocks do |t|
|
||||
t.string :domain, null: false
|
||||
|
@ -1,4 +1,4 @@
|
||||
class CreateAccountModerationNotes < ActiveRecord::Migration[5.1]
|
||||
class CreateAccountModerationNotes < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :account_moderation_notes do |t|
|
||||
t.text :content, null: false
|
||||
|
@ -1,6 +1,6 @@
|
||||
require Rails.root.join('lib', 'mastodon', 'migration_helpers')
|
||||
|
||||
class AddDisabledToCustomEmojis < ActiveRecord::Migration[5.1]
|
||||
class AddDisabledToCustomEmojis < ActiveRecord::Migration[5.2]
|
||||
include Mastodon::MigrationHelpers
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
@ -1,4 +1,4 @@
|
||||
class AddUriToCustomEmojis < ActiveRecord::Migration[5.1]
|
||||
class AddUriToCustomEmojis < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
add_column :custom_emojis, :uri, :string
|
||||
add_column :custom_emojis, :image_remote_url, :string
|
||||
|
@ -1,4 +1,4 @@
|
||||
class AddForeignKeyToAccountModerationNotes < ActiveRecord::Migration[5.1]
|
||||
class AddForeignKeyToAccountModerationNotes < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
safety_assured { add_foreign_key :account_moderation_notes, :accounts }
|
||||
end
|
||||
|
@ -1,4 +1,4 @@
|
||||
class ChangeAccountsNonnullableInAccountModerationNotes < ActiveRecord::Migration[5.1]
|
||||
class ChangeAccountsNonnullableInAccountModerationNotes < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
safety_assured do
|
||||
change_column_null :account_moderation_notes, :account_id, false
|
||||
|
@ -1,4 +1,4 @@
|
||||
class AddVisibleInPickerToCustomEmoji < ActiveRecord::Migration[5.1]
|
||||
class AddVisibleInPickerToCustomEmoji < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
safety_assured do
|
||||
add_column :custom_emojis, :visible_in_picker, :boolean, default: true, null: false
|
||||
|
@ -1,6 +1,6 @@
|
||||
require Rails.root.join('lib', 'mastodon', 'migration_helpers')
|
||||
|
||||
class AddReblogsToFollows < ActiveRecord::Migration[5.1]
|
||||
class AddReblogsToFollows < ActiveRecord::Migration[5.2]
|
||||
include Mastodon::MigrationHelpers
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
@ -1,6 +1,6 @@
|
||||
require Rails.root.join('lib', 'mastodon', 'migration_helpers')
|
||||
|
||||
class AddMemorialToAccounts < ActiveRecord::Migration[5.1]
|
||||
class AddMemorialToAccounts < ActiveRecord::Migration[5.2]
|
||||
include Mastodon::MigrationHelpers
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
@ -1,6 +1,6 @@
|
||||
require Rails.root.join('lib', 'mastodon', 'migration_helpers')
|
||||
|
||||
class AddDisabledToUsers < ActiveRecord::Migration[5.1]
|
||||
class AddDisabledToUsers < ActiveRecord::Migration[5.2]
|
||||
include Mastodon::MigrationHelpers
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
@ -1,6 +1,6 @@
|
||||
require Rails.root.join('lib', 'mastodon', 'migration_helpers')
|
||||
|
||||
class AddModeratorToAccounts < ActiveRecord::Migration[5.1]
|
||||
class AddModeratorToAccounts < ActiveRecord::Migration[5.2]
|
||||
include Mastodon::MigrationHelpers
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
@ -1,4 +1,4 @@
|
||||
class AddIndexDomainToEmailDomainBlocks < ActiveRecord::Migration[5.1]
|
||||
class AddIndexDomainToEmailDomainBlocks < ActiveRecord::Migration[5.2]
|
||||
disable_ddl_transaction!
|
||||
|
||||
def change
|
||||
|
@ -1,4 +1,4 @@
|
||||
class CreateLists < ActiveRecord::Migration[5.1]
|
||||
class CreateLists < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :lists do |t|
|
||||
t.references :account, foreign_key: { on_delete: :cascade }
|
||||
|
@ -1,4 +1,4 @@
|
||||
class CreateListAccounts < ActiveRecord::Migration[5.1]
|
||||
class CreateListAccounts < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :list_accounts do |t|
|
||||
t.belongs_to :list, foreign_key: { on_delete: :cascade }, null: false
|
||||
|
@ -1,4 +1,4 @@
|
||||
class AddMovedToAccountIdToAccounts < ActiveRecord::Migration[5.1]
|
||||
class AddMovedToAccountIdToAccounts < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
add_column :accounts, :moved_to_account_id, :bigint, null: true, default: nil
|
||||
safety_assured { add_foreign_key :accounts, :accounts, column: :moved_to_account_id, on_delete: :nullify }
|
||||
|
@ -1,4 +1,4 @@
|
||||
class CreateAdminActionLogs < ActiveRecord::Migration[5.1]
|
||||
class CreateAdminActionLogs < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :admin_action_logs do |t|
|
||||
t.belongs_to :account, foreign_key: { on_delete: :cascade }
|
||||
|
@ -1,4 +1,4 @@
|
||||
class AddIndexAccountAndReblogOfIdToStatuses < ActiveRecord::Migration[5.1]
|
||||
class AddIndexAccountAndReblogOfIdToStatuses < ActiveRecord::Migration[5.2]
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
|
@ -1,4 +1,4 @@
|
||||
class CreateInvites < ActiveRecord::Migration[5.1]
|
||||
class CreateInvites < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :invites do |t|
|
||||
t.belongs_to :user, foreign_key: { on_delete: :cascade }
|
||||
|
@ -1,4 +1,4 @@
|
||||
class AddInviteIdToUsers < ActiveRecord::Migration[5.1]
|
||||
class AddInviteIdToUsers < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
safety_assured { add_reference :users, :invite, null: true, default: nil, foreign_key: { on_delete: :nullify }, index: false }
|
||||
end
|
||||
|
@ -1,4 +1,4 @@
|
||||
class AddIndexReblogOfIdAndAccountToStatuses < ActiveRecord::Migration[5.1]
|
||||
class AddIndexReblogOfIdAndAccountToStatuses < ActiveRecord::Migration[5.2]
|
||||
disable_ddl_transaction!
|
||||
|
||||
def change
|
||||
|
@ -1,4 +1,4 @@
|
||||
class RemoveOldReblogIndexOnStatuses < ActiveRecord::Migration[5.1]
|
||||
class RemoveOldReblogIndexOnStatuses < ActiveRecord::Migration[5.2]
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
|
@ -1,4 +1,4 @@
|
||||
class AddIndexOnStreamEntries < ActiveRecord::Migration[5.1]
|
||||
class AddIndexOnStreamEntries < ActiveRecord::Migration[5.2]
|
||||
disable_ddl_transaction!
|
||||
|
||||
def change
|
||||
|
@ -1,6 +1,6 @@
|
||||
require Rails.root.join('lib', 'mastodon', 'migration_helpers')
|
||||
|
||||
class AddEmbedURLToPreviewCards < ActiveRecord::Migration[5.1]
|
||||
class AddEmbedURLToPreviewCards < ActiveRecord::Migration[5.2]
|
||||
include Mastodon::MigrationHelpers
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
@ -1,4 +1,4 @@
|
||||
class ChangeAccountIdNonnullableInLists < ActiveRecord::Migration[5.1]
|
||||
class ChangeAccountIdNonnullableInLists < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
safety_assured do
|
||||
change_column_null :lists, :account_id, false
|
||||
|
@ -1,4 +1,4 @@
|
||||
class RemoveDuplicateIndexesInLists < ActiveRecord::Migration[5.1]
|
||||
class RemoveDuplicateIndexesInLists < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
remove_index :list_accounts, name: 'index_list_accounts_on_account_id'
|
||||
remove_index :list_accounts, name: 'index_list_accounts_on_list_id'
|
||||
|
@ -1,4 +1,4 @@
|
||||
class MoreFasterIndexOnNotifications < ActiveRecord::Migration[5.1]
|
||||
class MoreFasterIndexOnNotifications < ActiveRecord::Migration[5.2]
|
||||
disable_ddl_transaction!
|
||||
|
||||
def change
|
||||
|
@ -1,4 +1,4 @@
|
||||
class AddIndexOnStatusesForApiV1AccountsAccountIdStatuses < ActiveRecord::Migration[5.1]
|
||||
class AddIndexOnStatusesForApiV1AccountsAccountIdStatuses < ActiveRecord::Migration[5.2]
|
||||
disable_ddl_transaction!
|
||||
|
||||
def change
|
||||
|
@ -1,4 +1,4 @@
|
||||
class AddRememberTokenToUsers < ActiveRecord::Migration[5.1]
|
||||
class AddRememberTokenToUsers < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
add_column :users, :remember_token, :string, null: true
|
||||
end
|
||||
|
@ -1,7 +1,7 @@
|
||||
class CreateIdentities < ActiveRecord::Migration[5.0]
|
||||
class CreateIdentities < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :identities do |t|
|
||||
t.references :user, foreign_key: { on_delete: :cascade }
|
||||
create_table :identities, id: :integer do |t|
|
||||
t.references :user, type: :integer, foreign_key: { on_delete: :cascade }
|
||||
t.string :provider, null: false, default: ''
|
||||
t.string :uid, null: false, default: ''
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
class ChangeUserIdNonnullable < ActiveRecord::Migration[5.1]
|
||||
class ChangeUserIdNonnullable < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
safety_assured do
|
||||
change_column_null :invites, :user_id, false
|
||||
|
@ -1,4 +1,4 @@
|
||||
class CreateBackups < ActiveRecord::Migration[5.1]
|
||||
class CreateBackups < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :backups do |t|
|
||||
t.references :user, foreign_key: { on_delete: :nullify }
|
||||
|
@ -1,4 +1,4 @@
|
||||
class AddFeaturedCollectionURLToAccounts < ActiveRecord::Migration[5.1]
|
||||
class AddFeaturedCollectionURLToAccounts < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
add_column :accounts, :featured_collection_url, :string
|
||||
end
|
||||
|
@ -1,4 +1,4 @@
|
||||
class ChangeColumnsInNotificationsNonnullable < ActiveRecord::Migration[5.1]
|
||||
class ChangeColumnsInNotificationsNonnullable < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
safety_assured do
|
||||
change_column_null :notifications, :activity_id, false
|
||||
|
@ -1,4 +1,4 @@
|
||||
class AddAssignedAccountIdToReports < ActiveRecord::Migration[5.1]
|
||||
class AddAssignedAccountIdToReports < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
safety_assured { add_reference :reports, :assigned_account, null: true, default: nil, foreign_key: { on_delete: :nullify, to_table: :accounts }, index: false }
|
||||
end
|
||||
|
@ -1,4 +1,4 @@
|
||||
class CreateReportNotes < ActiveRecord::Migration[5.1]
|
||||
class CreateReportNotes < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :report_notes do |t|
|
||||
t.text :content, null: false
|
||||
|
@ -1,4 +1,4 @@
|
||||
class AddFieldsToAccounts < ActiveRecord::Migration[5.1]
|
||||
class AddFieldsToAccounts < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
add_column :accounts, :fields, :jsonb
|
||||
end
|
||||
|
@ -1,10 +1,10 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class ImproveIndexOnStatusesForApiV1AccountsAccountIdStatuses < ActiveRecord::Migration[5.1]
|
||||
class ImproveIndexOnStatusesForApiV1AccountsAccountIdStatuses < ActiveRecord::Migration[5.2]
|
||||
disable_ddl_transaction!
|
||||
|
||||
def change
|
||||
# These changes ware reverted by migration 20180514140000.
|
||||
# These changes were reverted by migration 20180514140000.
|
||||
# add_index :statuses, [:account_id, :id, :visibility], where: 'visibility IN (0, 1, 2)', algorithm: :concurrently
|
||||
# add_index :statuses, [:account_id, :id], where: 'visibility = 3', algorithm: :concurrently
|
||||
# remove_index :statuses, column: [:account_id, :id, :visibility, :updated_at], order: { id: :desc }, algorithm: :concurrently, name: :index_statuses_20180106
|
||||
|
@ -1,6 +1,6 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class RevertIndexChangeOnStatusesForApiV1AccountsAccountIdStatuses < ActiveRecord::Migration[5.1]
|
||||
class RevertIndexChangeOnStatusesForApiV1AccountsAccountIdStatuses < ActiveRecord::Migration[5.2]
|
||||
disable_ddl_transaction!
|
||||
|
||||
def change
|
||||
|
@ -1,4 +1,8 @@
|
||||
require_relative '../../lib/mastodon/migration_warning'
|
||||
|
||||
class FixAccountsUniqueIndex < ActiveRecord::Migration[5.2]
|
||||
include Mastodon::MigrationWarning
|
||||
|
||||
class Account < ApplicationRecord
|
||||
# Dummy class, to make migration possible across version changes
|
||||
has_one :user, inverse_of: :account
|
||||
@ -35,22 +39,11 @@ class FixAccountsUniqueIndex < ActiveRecord::Migration[5.2]
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
if $stdout.isatty
|
||||
say ''
|
||||
say 'WARNING: This migration may take a *long* time for large instances'
|
||||
say 'It will *not* lock tables for any significant time, but it may run'
|
||||
say 'for a very long time. We will pause for 10 seconds to allow you to'
|
||||
say 'interrupt this migration if you are not ready.'
|
||||
say ''
|
||||
say 'This migration will irreversibly delete user accounts with duplicate'
|
||||
say 'usernames. You may use the `rake mastodon:maintenance:find_duplicate_usernames`'
|
||||
say 'task to manually deal with such accounts before running this migration.'
|
||||
|
||||
10.downto(1) do |i|
|
||||
say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
|
||||
sleep 1
|
||||
end
|
||||
end
|
||||
migration_duration_warning(<<~EXPLANATION)
|
||||
This migration will irreversibly delete user accounts with duplicate
|
||||
usernames. You may use the `rake mastodon:maintenance:find_duplicate_usernames`
|
||||
task to manually deal with such accounts before running this migration.
|
||||
EXPLANATION
|
||||
|
||||
duplicates = Account.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM accounts GROUP BY lower(username), lower(domain) HAVING count(*) > 1').to_ary
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
# This migration is a duplicate of 20180410220657 and may get ignored, see
|
||||
# config/initializers/0_duplicate_migrations.rb
|
||||
|
||||
class CreateBookmarks < ActiveRecord::Migration[5.1]
|
||||
class CreateBookmarks < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :bookmarks do |t|
|
||||
t.references :account, null: false
|
||||
|
@ -1,4 +1,8 @@
|
||||
require_relative '../../lib/mastodon/migration_warning'
|
||||
|
||||
class MigrateAccountConversations < ActiveRecord::Migration[5.2]
|
||||
include Mastodon::MigrationWarning
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
class Mention < ApplicationRecord
|
||||
@ -62,19 +66,7 @@ class MigrateAccountConversations < ActiveRecord::Migration[5.2]
|
||||
end
|
||||
|
||||
def up
|
||||
if $stdout.isatty
|
||||
say ''
|
||||
say 'WARNING: This migration may take a *long* time for large instances'
|
||||
say 'It will *not* lock tables for any significant time, but it may run'
|
||||
say 'for a very long time. We will pause for 10 seconds to allow you to'
|
||||
say 'interrupt this migration if you are not ready.'
|
||||
say ''
|
||||
|
||||
10.downto(1) do |i|
|
||||
say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
|
||||
sleep 1
|
||||
end
|
||||
end
|
||||
migration_duration_warning
|
||||
|
||||
migrated = 0
|
||||
last_time = Time.zone.now
|
||||
|
@ -1,4 +1,4 @@
|
||||
class ChangeListAccountFollowNullable < ActiveRecord::Migration[5.1]
|
||||
class ChangeListAccountFollowNullable < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
safety_assured do
|
||||
change_column_null :list_accounts, :follow_id, true
|
||||
|
@ -1,4 +1,4 @@
|
||||
class MediaAttachmentIdsToTimestampIds < ActiveRecord::Migration[5.1]
|
||||
class MediaAttachmentIdsToTimestampIds < ActiveRecord::Migration[5.2]
|
||||
def up
|
||||
# Set up the media_attachments.id column to use our timestamp-based IDs.
|
||||
safety_assured do
|
||||
|
@ -1,6 +1,6 @@
|
||||
require Rails.root.join('lib', 'mastodon', 'migration_helpers')
|
||||
|
||||
class AddNotifyToFollows < ActiveRecord::Migration[5.1]
|
||||
class AddNotifyToFollows < ActiveRecord::Migration[5.2]
|
||||
include Mastodon::MigrationHelpers
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
@ -1,4 +1,4 @@
|
||||
class AccountIdsToTimestampIds < ActiveRecord::Migration[5.1]
|
||||
class AccountIdsToTimestampIds < ActiveRecord::Migration[5.2]
|
||||
def up
|
||||
# Set up the accounts.id column to use our timestamp-based IDs.
|
||||
safety_assured do
|
||||
|
7
db/migrate/20230215074327_add_settings_to_users.rb
Normal file
7
db/migrate/20230215074327_add_settings_to_users.rb
Normal file
@ -0,0 +1,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class AddSettingsToUsers < ActiveRecord::Migration[6.1]
|
||||
def change
|
||||
add_column :users, :settings, :text
|
||||
end
|
||||
end
|
84
db/migrate/20230215074423_move_user_settings.rb
Normal file
84
db/migrate/20230215074423_move_user_settings.rb
Normal file
@ -0,0 +1,84 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class MoveUserSettings < ActiveRecord::Migration[6.1]
|
||||
class User < ApplicationRecord; end
|
||||
|
||||
MAPPING = {
|
||||
default_privacy: 'default_privacy',
|
||||
default_sensitive: 'web.default_sensitive',
|
||||
default_language: 'default_language',
|
||||
noindex: 'noindex',
|
||||
theme: 'theme',
|
||||
trends: 'web.trends',
|
||||
unfollow_modal: 'web.unfollow_modal',
|
||||
boost_modal: 'web.reblog_modal',
|
||||
delete_modal: 'web.delete_modal',
|
||||
auto_play_gif: 'web.auto_play',
|
||||
display_media: 'web.display_media',
|
||||
expand_spoilers: 'web.expand_content_warnings',
|
||||
reduce_motion: 'web.reduce_motion',
|
||||
disable_swiping: 'web.disable_swiping',
|
||||
show_application: 'show_application',
|
||||
system_font_ui: 'web.use_system_font',
|
||||
aggregate_reblogs: 'aggregate_reblogs',
|
||||
advanced_layout: 'web.advanced_layout',
|
||||
use_blurhash: 'web.use_blurhash',
|
||||
use_pending_items: 'web.use_pending_items',
|
||||
crop_images: 'web.crop_images',
|
||||
notification_emails: {
|
||||
follow: 'notification_emails.follow',
|
||||
reblog: 'notification_emails.reblog',
|
||||
favourite: 'notification_emails.favourite',
|
||||
mention: 'notification_emails.mention',
|
||||
follow_request: 'notification_emails.follow_request',
|
||||
report: 'notification_emails.report',
|
||||
pending_account: 'notification_emails.pending_account',
|
||||
trending_tag: 'notification_emails.trends',
|
||||
appeal: 'notification_emails.appeal',
|
||||
}.freeze,
|
||||
always_send_emails: 'always_send_emails',
|
||||
interactions: {
|
||||
must_be_follower: 'interactions.must_be_follower',
|
||||
must_be_following: 'interactions.must_be_following',
|
||||
must_be_following_dm: 'interactions.must_be_following_dm',
|
||||
}.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 = {}
|
||||
|
||||
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
|
@ -34,6 +34,7 @@ class RemoveSuspendedSilencedAccountFields < ActiveRecord::Migration[5.2]
|
||||
remove_column :accounts, :suspended, :boolean, null: false, default: false
|
||||
remove_column :accounts, :silenced, :boolean, null: false, default: false
|
||||
end
|
||||
Account.reset_column_information
|
||||
end
|
||||
|
||||
def down
|
||||
|
@ -1,7 +1,7 @@
|
||||
class RemoveSubscriptionExpiresAtFromAccounts < ActiveRecord::Migration[5.0]
|
||||
class RemoveSubscriptionExpiresAtFromAccounts < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
safety_assured do
|
||||
remove_column :accounts, :subscription_expires_at, :datetime, null: true, default: nil
|
||||
remove_column :accounts, :subscription_expires_at, :datetime, null: true, default: nil, precision: nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -10,7 +10,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 2022_12_06_114142) do
|
||||
ActiveRecord::Schema.define(version: 2023_02_15_074423) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
@ -1063,6 +1063,7 @@ ActiveRecord::Schema.define(version: 2022_12_06_114142) do
|
||||
t.inet "sign_up_ip"
|
||||
t.boolean "skip_sign_in_token"
|
||||
t.bigint "role_id"
|
||||
t.text "settings"
|
||||
t.index ["account_id"], name: "index_users_on_account_id"
|
||||
t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
|
||||
t.index ["created_by_application_id"], name: "index_users_on_created_by_application_id", where: "(created_by_application_id IS NOT NULL)"
|
||||
|
@ -1,5 +1,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
Dir[Rails.root.join('db', 'seeds', '*.rb')].sort.each do |seed|
|
||||
load seed
|
||||
Chewy.strategy(:mastodon) do
|
||||
Dir[Rails.root.join('db', 'seeds', '*.rb')].sort.each do |seed|
|
||||
load seed
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user