mirror of
https://github.com/discourse/discourse.git
synced 2024-12-25 23:53:52 +08:00
42 lines
1.4 KiB
Ruby
42 lines
1.4 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
class RemoveEnableWhispersSiteSetting < ActiveRecord::Migration[7.0]
|
||
|
def up
|
||
|
# If enable_whispers was true, insert whispers_allowed_groups or add
|
||
|
# staff group to whispers_allowed_groups. This is necessary to keep
|
||
|
# the current behavior which has a bypass for staff members.
|
||
|
execute <<~SQL
|
||
|
INSERT INTO site_settings(name, data_type, value, created_at, updated_at)
|
||
|
SELECT 'whispers_allowed_groups', '20', '3', created_at, NOW()
|
||
|
FROM site_settings
|
||
|
WHERE name = 'enable_whispers' AND value = 't'
|
||
|
ON CONFLICT DO NOTHING
|
||
|
SQL
|
||
|
|
||
|
execute <<~SQL
|
||
|
UPDATE site_settings
|
||
|
SET value = array_to_string(array_append(string_to_array(value, '|'), '3'), '|')
|
||
|
WHERE name = 'whispers_allowed_groups' AND
|
||
|
EXISTS(SELECT 1 FROM site_settings WHERE name = 'enable_whispers' AND value = 't') AND
|
||
|
NOT '3' = ANY(string_to_array(value, '|'))
|
||
|
SQL
|
||
|
|
||
|
# If enable_whispers was false, reset whispers_allowed_groups
|
||
|
execute <<~SQL
|
||
|
UPDATE site_settings
|
||
|
SET value = ''
|
||
|
WHERE name = 'whispers_allowed_groups' AND
|
||
|
NOT EXISTS(SELECT 1 FROM site_settings WHERE name = 'enable_whispers' AND value = 't')
|
||
|
SQL
|
||
|
|
||
|
# Delete enable_whispers site setting
|
||
|
execute <<~SQL
|
||
|
DELETE FROM site_settings WHERE name = 'enable_whispers'
|
||
|
SQL
|
||
|
end
|
||
|
|
||
|
def down
|
||
|
raise ActiveRecord::IrreversibleMigration
|
||
|
end
|
||
|
end
|