34 lines
1.1 KiB
Ruby
34 lines
1.1 KiB
Ruby
# NOTE: this depends on migration SequenceForAutomatedFeatureFlags
|
|
class FeatureFlagsForNewDashboard < Sequel::Migration
|
|
|
|
FLAGS = %w(new_public_dashboard new_dashboard new_public_dashboard_global)
|
|
|
|
def up
|
|
# Update the flags if they exist to make them unrestricted
|
|
SequelRails.connection.run(%Q{
|
|
UPDATE feature_flags SET restricted = FALSE WHERE name IN (#{sql_flag_list}) AND restricted = TRUE;
|
|
})
|
|
|
|
# Create the flags if they don't exist
|
|
SequelRails.connection.run(%Q{
|
|
INSERT INTO feature_flags (id, name, restricted)
|
|
WITH flags_to_add as (
|
|
SELECT * FROM (SELECT unnest(array[#{sql_flag_list}]) as name) as flag EXCEPT (SELECT name from feature_flags)
|
|
)
|
|
SELECT nextval('#{SequenceForAutomatedFeatureFlags::NAME}'), name, FALSE FROM flags_to_add;
|
|
})
|
|
end
|
|
|
|
def down
|
|
# Delete automatically-added flags
|
|
SequelRails.connection.run(%Q{
|
|
DELETE FROM feature_flags WHERE id <= #{SequenceForAutomatedFeatureFlags::START_SEQ_NUMBER} AND name IN (#{sql_flag_list});
|
|
})
|
|
end
|
|
|
|
def sql_flag_list
|
|
FLAGS.map {|flag| "'#{flag}'"}.join(',')
|
|
end
|
|
|
|
end
|