98bb435f42
Migrations shouldn't fail RuboCop checks - especially lint checks, such as the nested method check. To avoid changing code in existing migrations, add the magic comment to the top of each of them to skip that file.
30 lines
1.1 KiB
Ruby
30 lines
1.1 KiB
Ruby
# rubocop:disable all
|
|
class AddVisibilityLevelToGroups < ActiveRecord::Migration
|
|
def up
|
|
add_column :namespaces, :visibility_level, :integer, null: false, default: Gitlab::VisibilityLevel::PUBLIC
|
|
add_index :namespaces, :visibility_level
|
|
|
|
# Unfortunately, this is needed on top of the `default`, since we don't want the configuration specific
|
|
# `allowed_visibility_level` to end up in schema.rb
|
|
if allowed_visibility_level < Gitlab::VisibilityLevel::PUBLIC
|
|
execute("UPDATE namespaces SET visibility_level = #{allowed_visibility_level}")
|
|
end
|
|
end
|
|
|
|
def down
|
|
remove_column :namespaces, :visibility_level
|
|
end
|
|
|
|
private
|
|
|
|
def allowed_visibility_level
|
|
application_settings = select_one("SELECT restricted_visibility_levels FROM application_settings ORDER BY id DESC LIMIT 1")
|
|
if application_settings
|
|
restricted_visibility_levels = YAML.safe_load(application_settings["restricted_visibility_levels"]) rescue nil
|
|
end
|
|
restricted_visibility_levels ||= []
|
|
|
|
allowed_levels = Gitlab::VisibilityLevel.values - restricted_visibility_levels
|
|
allowed_levels.max
|
|
end
|
|
end
|