mirror of
https://github.com/discourse/discourse.git
synced 2024-11-28 07:43:41 +08:00
30990006a9
This reduces chances of errors where consumers of strings mutate inputs and reduces memory usage of the app. Test suite passes now, but there may be some stuff left, so we will run a few sites on a branch prior to merging
79 lines
2.7 KiB
Ruby
79 lines
2.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class AddUserOptions < ActiveRecord::Migration[4.2]
|
|
def up
|
|
|
|
create_table :user_options, id: false do |t|
|
|
t.integer :user_id, null: false
|
|
t.boolean :email_always, null: false, default: false
|
|
t.boolean :mailing_list_mode, null: false, default: false
|
|
t.boolean :email_digests
|
|
t.boolean :email_direct, null: false, default: true
|
|
t.boolean :email_private_messages, null: false, default: true
|
|
t.boolean :external_links_in_new_tab, null: false, default: false
|
|
t.boolean :enable_quoting, null: false, default: true
|
|
t.boolean :dynamic_favicon, null: false, default: false
|
|
t.boolean :disable_jump_reply, null: false, default: false
|
|
t.boolean :edit_history_public, null: false, default: false
|
|
t.boolean :automatically_unpin_topics, null: false, default: true
|
|
t.integer :digest_after_days
|
|
end
|
|
|
|
add_index :user_options, [:user_id], unique: true
|
|
|
|
execute <<SQL
|
|
INSERT INTO user_options (
|
|
user_id,
|
|
email_always,
|
|
mailing_list_mode,
|
|
email_digests,
|
|
email_direct,
|
|
email_private_messages,
|
|
external_links_in_new_tab,
|
|
enable_quoting,
|
|
dynamic_favicon,
|
|
disable_jump_reply,
|
|
edit_history_public,
|
|
automatically_unpin_topics,
|
|
digest_after_days
|
|
)
|
|
SELECT id,
|
|
email_always,
|
|
mailing_list_mode,
|
|
email_digests,
|
|
email_direct,
|
|
COALESCE(email_private_messages,true),
|
|
external_links_in_new_tab,
|
|
enable_quoting,
|
|
dynamic_favicon,
|
|
disable_jump_reply,
|
|
edit_history_public,
|
|
automatically_unpin_topics,
|
|
digest_after_days
|
|
FROM users
|
|
SQL
|
|
|
|
# these can not be removed until a bit later
|
|
# if we remove them now all currently running unicorns will start erroring out
|
|
#
|
|
# remove_column :users, :email_always
|
|
# remove_column :users, :mailing_list_mode
|
|
# remove_column :users, :email_digests
|
|
# remove_column :users, :email_direct
|
|
# remove_column :users, :email_private_messages
|
|
# remove_column :users, :external_links_in_new_tab
|
|
# remove_column :users, :enable_quoting
|
|
# remove_column :users, :dynamic_favicon
|
|
# remove_column :users, :disable_jump_reply
|
|
# remove_column :users, :edit_history_public
|
|
# remove_column :users, :automatically_unpin_topics
|
|
# remove_column :users, :digest_after_days
|
|
end
|
|
|
|
def down
|
|
# we can not move backwards here cause columns
|
|
# get removed an hour after the migration
|
|
raise ActiveRecord::IrreversibleMigration
|
|
end
|
|
end
|