cartodb/db/migrate/20150507103757_feature_flags_for_new_dashboard.rb

34 lines
1.1 KiB
Ruby
Raw Normal View History

2020-06-15 10:58:47 +08:00
# 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