Module: Gitlab::Database::MigrationHelpers::FeatureFlagMigratorHelpers
- Included in:
- Gitlab::Database::MigrationHelpers
- Defined in:
- lib/gitlab/database/migration_helpers/feature_flag_migrator_helpers.rb
Instance Method Summary collapse
-
#down_migrate_to_jsonb_setting(setting_name:, jsonb_column_name:) ⇒ Integer
Reverts a JSONB application setting to its default state during a migration rollback.
-
#down_migrate_to_setting(setting_name:, default_enabled:) ⇒ Integer
Reverts an application setting to its default value during a migration rollback.
-
#up_migrate_to_jsonb_setting(feature_flag_name:, setting_name:, jsonb_column_name:, default_enabled:) ⇒ Integer
Migrates a feature flag to a JSONB application setting.
-
#up_migrate_to_setting(feature_flag_name:, setting_name:, default_enabled:) ⇒ Integer
Migrates a feature flag to an application setting.
Instance Method Details
#down_migrate_to_jsonb_setting(setting_name:, jsonb_column_name:) ⇒ Integer
Reverts a JSONB application setting to its default state during a migration rollback. This method removes the specified setting from the JSONB column.
97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/gitlab/database/migration_helpers/feature_flag_migrator_helpers.rb', line 97 def down_migrate_to_jsonb_setting(setting_name:, jsonb_column_name:) if setting_name.blank? || jsonb_column_name.nil? raise ArgumentError, 'setting_name and jsonb_column_name are required' end sql = <<~SQL UPDATE application_settings SET #{jsonb_column_name} = #{jsonb_column_name} - '#{setting_name}', updated_at = NOW() WHERE id = (SELECT MAX(id) FROM application_settings) SQL execute(sql) end |
#down_migrate_to_setting(setting_name:, default_enabled:) ⇒ Integer
Reverts an application setting to its default value during a migration rollback.
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/gitlab/database/migration_helpers/feature_flag_migrator_helpers.rb', line 75 def down_migrate_to_setting(setting_name:, default_enabled:) if setting_name.blank? || default_enabled.nil? raise ArgumentError, 'setting_name and default_enabled are required' end raise ArgumentError, 'default_enabled must be a boolean' unless [true, false].include?(default_enabled) sql = <<~SQL UPDATE application_settings SET #{setting_name} = #{default_enabled}, updated_at = NOW() WHERE id = (SELECT MAX(id) FROM application_settings) SQL execute(sql) end |
#up_migrate_to_jsonb_setting(feature_flag_name:, setting_name:, jsonb_column_name:, default_enabled:) ⇒ Integer
Migrates a feature flag to a JSONB application setting.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/gitlab/database/migration_helpers/feature_flag_migrator_helpers.rb', line 47 def up_migrate_to_jsonb_setting(feature_flag_name:, setting_name:, jsonb_column_name:, default_enabled:) if feature_flag_name.blank? || setting_name.blank? || jsonb_column_name.blank? || default_enabled.nil? raise ArgumentError, 'feature_flag_name, jsonb_column_name, setting_name, and default_enabled are required' end raise ArgumentError, 'default_enabled must be a boolean' unless [true, false].include?(default_enabled) feature_flag_state = feature_flag_state(feature_flag_name, default_enabled) sql = <<~SQL UPDATE application_settings SET #{jsonb_column_name} = jsonb_set( COALESCE(#{jsonb_column_name}, '{}'::jsonb), '{#{setting_name}}', to_jsonb(#{feature_flag_state}) ), updated_at = NOW() WHERE id = (SELECT MAX(id) FROM application_settings) SQL execute(sql) end |
#up_migrate_to_setting(feature_flag_name:, setting_name:, default_enabled:) ⇒ Integer
Migrates a feature flag to an application setting.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/gitlab/database/migration_helpers/feature_flag_migrator_helpers.rb', line 22 def up_migrate_to_setting(feature_flag_name:, setting_name:, default_enabled:) if feature_flag_name.blank? || setting_name.blank? || default_enabled.nil? raise ArgumentError, 'feature_flag_name, setting_name, and default_enabled are required' end raise ArgumentError, 'default_enabled must be a boolean' unless [true, false].include?(default_enabled) feature_flag_state = feature_flag_state(feature_flag_name, default_enabled) sql = <<~SQL UPDATE application_settings SET #{setting_name} = #{feature_flag_state}, updated_at = NOW() WHERE id = (SELECT MAX(id) FROM application_settings) SQL execute(sql) end |