diff --git a/db/docs/approval_group_rules.yml b/db/docs/approval_group_rules.yml new file mode 100644 index 0000000000000000000000000000000000000000..35f75338480356bc5e8e94151e9698b9f6fbb5c5 --- /dev/null +++ b/db/docs/approval_group_rules.yml @@ -0,0 +1,10 @@ +--- +table_name: approval_group_rules +classes: + - ApprovalRules::ApprovalGroupRule +feature_categories: + - source_code_management +description: Keeps approval group rules +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/132651 +milestone: '16.5' +gitlab_schema: gitlab_main diff --git a/db/docs/approval_group_rules_groups.yml b/db/docs/approval_group_rules_groups.yml new file mode 100644 index 0000000000000000000000000000000000000000..0599af6ac15e5aba0f2352508b1c36e61d2500e1 --- /dev/null +++ b/db/docs/approval_group_rules_groups.yml @@ -0,0 +1,9 @@ +--- +table_name: approval_group_rules_groups +classes: [] +feature_categories: + - source_code_management +description: Keeps connection between group and a group approval rule +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/132651 +milestone: '16.5' +gitlab_schema: gitlab_main diff --git a/db/docs/approval_group_rules_protected_branches.yml b/db/docs/approval_group_rules_protected_branches.yml new file mode 100644 index 0000000000000000000000000000000000000000..ac55f0980beaeee594f29cfe459e7f9ea360b6dc --- /dev/null +++ b/db/docs/approval_group_rules_protected_branches.yml @@ -0,0 +1,9 @@ +--- +table_name: approval_group_rules_protected_branches +classes: [] +feature_categories: + - source_code_management +description: Keeps relation between approval group rules and protected branches. +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/132651 +milestone: '16.5' +gitlab_schema: gitlab_main diff --git a/db/docs/approval_group_rules_users.yml b/db/docs/approval_group_rules_users.yml new file mode 100644 index 0000000000000000000000000000000000000000..67271d2a35d727be4926473362583d06b3e13b31 --- /dev/null +++ b/db/docs/approval_group_rules_users.yml @@ -0,0 +1,9 @@ +--- +table_name: approval_group_rules_users +classes: [] +feature_categories: + - source_code_management +description: Keeps connection between user and a group approval rule +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/132651 +milestone: '16.5' +gitlab_schema: gitlab_main diff --git a/db/migrate/20230926092914_add_approval_group_rules.rb b/db/migrate/20230926092914_add_approval_group_rules.rb new file mode 100644 index 0000000000000000000000000000000000000000..c5f4a356df192260504858323b56a4bc81fb45be --- /dev/null +++ b/db/migrate/20230926092914_add_approval_group_rules.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +class AddApprovalGroupRules < Gitlab::Database::Migration[2.1] + INDEX_GROUP_ID_TYPE_NAME = 'idx_on_approval_group_rules_group_id_type_name' + INDEX_ANY_APPROVER_TYPE = 'idx_on_approval_group_rules_any_approver_type' + INDEX_SECURITY_ORCHESTRATION_POLICY_CONFURATION = 'idx_on_approval_group_rules_security_orch_policy' + disable_ddl_transaction! + + def up + create_table :approval_group_rules do |t| + t.references :group, references: :namespaces, null: false, + foreign_key: { to_table: :namespaces, on_delete: :cascade }, index: false + t.timestamps_with_timezone + t.integer :approvals_required, limit: 2, null: false, default: 0 + t.integer :report_type, limit: 2, null: true, default: nil + t.integer :rule_type, limit: 2, null: false, default: 1 + t.integer :security_orchestration_policy_configuration_id, limit: 5 + t.integer :scan_result_policy_id, limit: 5, index: true + t.text :name, null: false, limit: 255 + + t.index [:group_id, :rule_type, :name], unique: true, name: INDEX_GROUP_ID_TYPE_NAME + t.index [:group_id, :rule_type], where: 'rule_type = 4', unique: true, name: INDEX_ANY_APPROVER_TYPE + t.index :security_orchestration_policy_configuration_id, name: INDEX_SECURITY_ORCHESTRATION_POLICY_CONFURATION + end + + add_text_limit :approval_group_rules, :name, 255 + end + + def down + with_lock_retries do + drop_table :approval_group_rules + end + end +end diff --git a/db/migrate/20230926092944_add_approval_group_rules_groups.rb b/db/migrate/20230926092944_add_approval_group_rules_groups.rb new file mode 100644 index 0000000000000000000000000000000000000000..52ac86737e6fde3a34c64ff7a31abe806d427b77 --- /dev/null +++ b/db/migrate/20230926092944_add_approval_group_rules_groups.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class AddApprovalGroupRulesGroups < Gitlab::Database::Migration[2.1] + INDEX_RULE_GROUP = 'idx_on_approval_group_rules_groups_rule_group' + + def up + create_table :approval_group_rules_groups do |t| + t.bigint :approval_group_rule_id, null: false + t.bigint :group_id, null: false, index: true + + t.index [:approval_group_rule_id, :group_id], unique: true, name: INDEX_RULE_GROUP + end + end + + def down + drop_table :approval_group_rules_groups + end +end diff --git a/db/migrate/20230926093004_add_approval_group_rules_users.rb b/db/migrate/20230926093004_add_approval_group_rules_users.rb new file mode 100644 index 0000000000000000000000000000000000000000..8c6d14ce9ac3a6af3e77baf90dd5997ca75c0d3b --- /dev/null +++ b/db/migrate/20230926093004_add_approval_group_rules_users.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class AddApprovalGroupRulesUsers < Gitlab::Database::Migration[2.1] + INDEX_RULE_USER = 'idx_on_approval_group_rules_users_rule_user' + + def up + create_table :approval_group_rules_users do |t| + t.bigint :approval_group_rule_id, null: false + t.bigint :user_id, null: false, index: true + + t.index [:approval_group_rule_id, :user_id], unique: true, name: INDEX_RULE_USER + end + end + + def down + drop_table :approval_group_rules_users + end +end diff --git a/db/migrate/20230926093025_add_approval_group_rules_protected_branches.rb b/db/migrate/20230926093025_add_approval_group_rules_protected_branches.rb new file mode 100644 index 0000000000000000000000000000000000000000..5f623ec9edbdf8bfbb14ecfdf31f6e149715e1d6 --- /dev/null +++ b/db/migrate/20230926093025_add_approval_group_rules_protected_branches.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class AddApprovalGroupRulesProtectedBranches < Gitlab::Database::Migration[2.1] + INDEX_RULE_PROTECTED_BRANCH = 'idx_on_approval_group_rules_protected_branch' + INDEX_APPROVAL_GROUP_RULE = 'idx_on_approval_group_rules' + INDEX_PROTECTED_BRANCH = 'idx_on_protected_branch' + + def up + create_table :approval_group_rules_protected_branches do |t| + t.bigint :approval_group_rule_id, null: false + t.bigint :protected_branch_id, null: false + + t.index :protected_branch_id, name: INDEX_PROTECTED_BRANCH + t.index [:approval_group_rule_id, :protected_branch_id], unique: true, name: INDEX_RULE_PROTECTED_BRANCH + end + end + + def down + drop_table :approval_group_rules_protected_branches + end +end diff --git a/db/migrate/20230926093101_add_fk_to_approval_rule_on_approval_group_rules_users.rb b/db/migrate/20230926093101_add_fk_to_approval_rule_on_approval_group_rules_users.rb new file mode 100644 index 0000000000000000000000000000000000000000..4c11542e9e602ccf47c222ce64ed893e7f20bf28 --- /dev/null +++ b/db/migrate/20230926093101_add_fk_to_approval_rule_on_approval_group_rules_users.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class AddFkToApprovalRuleOnApprovalGroupRulesUsers < Gitlab::Database::Migration[2.1] + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :approval_group_rules_users, + :approval_group_rules, + column: :approval_group_rule_id, + on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :approval_group_rules_users, column: :approval_group_rule_id + end + end +end diff --git a/db/migrate/20230926093144_add_fk_to_user_on_approval_group_rules_users.rb b/db/migrate/20230926093144_add_fk_to_user_on_approval_group_rules_users.rb new file mode 100644 index 0000000000000000000000000000000000000000..30c08c8966d6f3932036eef1ec1453266f28c739 --- /dev/null +++ b/db/migrate/20230926093144_add_fk_to_user_on_approval_group_rules_users.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddFkToUserOnApprovalGroupRulesUsers < Gitlab::Database::Migration[2.1] + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :approval_group_rules_users, :users, column: :user_id, on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :approval_group_rules_users, column: :user_id + end + end +end diff --git a/db/migrate/20230926093211_add_fk_to_approval_rule_on_approval_group_rules_groups.rb b/db/migrate/20230926093211_add_fk_to_approval_rule_on_approval_group_rules_groups.rb new file mode 100644 index 0000000000000000000000000000000000000000..4452615026646954e75a4f884d57448c74906dfa --- /dev/null +++ b/db/migrate/20230926093211_add_fk_to_approval_rule_on_approval_group_rules_groups.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class AddFkToApprovalRuleOnApprovalGroupRulesGroups < Gitlab::Database::Migration[2.1] + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :approval_group_rules_groups, :approval_group_rules, column: :approval_group_rule_id, + on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :approval_group_rules_groups, column: :approval_group_rule_id + end + end +end diff --git a/db/migrate/20230926093251_add_fk_to_group_on_approval_group_rules_groups.rb b/db/migrate/20230926093251_add_fk_to_group_on_approval_group_rules_groups.rb new file mode 100644 index 0000000000000000000000000000000000000000..2052993af0532328805bc455da24bb473716317b --- /dev/null +++ b/db/migrate/20230926093251_add_fk_to_group_on_approval_group_rules_groups.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class AddFkToGroupOnApprovalGroupRulesGroups < Gitlab::Database::Migration[2.1] + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :approval_group_rules_groups, :namespaces, column: :group_id, on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :approval_group_rules_groups, column: :group_id + end + end +end diff --git a/db/migrate/20230926105440_add_fk_to_approval_rule_on_approval_group_rules_protected_branches.rb b/db/migrate/20230926105440_add_fk_to_approval_rule_on_approval_group_rules_protected_branches.rb new file mode 100644 index 0000000000000000000000000000000000000000..cd799656ac9731153b3951204e4fa25e221f17b3 --- /dev/null +++ b/db/migrate/20230926105440_add_fk_to_approval_rule_on_approval_group_rules_protected_branches.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class AddFkToApprovalRuleOnApprovalGroupRulesProtectedBranches < Gitlab::Database::Migration[2.1] + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :approval_group_rules_protected_branches, + :approval_group_rules, + column: :approval_group_rule_id, + on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :approval_group_rules_protected_branches, column: :approval_group_rule_id + end + end +end diff --git a/db/migrate/20230926105931_add_fk_to_protected_branch_on_approval_group_rules_protected_branches.rb b/db/migrate/20230926105931_add_fk_to_protected_branch_on_approval_group_rules_protected_branches.rb new file mode 100644 index 0000000000000000000000000000000000000000..5804a8da4d8fdc4501440d7a6d11d8c3dc22f5d9 --- /dev/null +++ b/db/migrate/20230926105931_add_fk_to_protected_branch_on_approval_group_rules_protected_branches.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class AddFkToProtectedBranchOnApprovalGroupRulesProtectedBranches < Gitlab::Database::Migration[2.1] + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :approval_group_rules_protected_branches, :protected_branches, + column: :protected_branch_id, on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :approval_group_rules_protected_branches, column: :protected_branch_id + end + end +end diff --git a/db/migrate/20230928145555_add_fk_to_security_orchestration_policy_configuration_on_approval_group_rules.rb b/db/migrate/20230928145555_add_fk_to_security_orchestration_policy_configuration_on_approval_group_rules.rb new file mode 100644 index 0000000000000000000000000000000000000000..2630adcf81f8b43e9de72040b2069cd815f56759 --- /dev/null +++ b/db/migrate/20230928145555_add_fk_to_security_orchestration_policy_configuration_on_approval_group_rules.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AddFkToSecurityOrchestrationPolicyConfigurationOnApprovalGroupRules < Gitlab::Database::Migration[2.1] + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :approval_group_rules, :security_orchestration_policy_configurations, + column: :security_orchestration_policy_configuration_id, on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :approval_group_rules, + column: :security_orchestration_policy_configuration_id + end + end +end diff --git a/db/migrate/20230928145637_add_fk_to_scan_result_policy_on_approval_group_rules.rb b/db/migrate/20230928145637_add_fk_to_scan_result_policy_on_approval_group_rules.rb new file mode 100644 index 0000000000000000000000000000000000000000..f30d03e0f62fc143e5762ebaef223053bd84206a --- /dev/null +++ b/db/migrate/20230928145637_add_fk_to_scan_result_policy_on_approval_group_rules.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class AddFkToScanResultPolicyOnApprovalGroupRules < Gitlab::Database::Migration[2.1] + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :approval_group_rules, :scan_result_policies, + column: :scan_result_policy_id, on_delete: :cascade + end + + def down + with_lock_retries do + remove_foreign_key :approval_group_rules, column: :scan_result_policy_id + end + end +end diff --git a/db/schema_migrations/20230926092914 b/db/schema_migrations/20230926092914 new file mode 100644 index 0000000000000000000000000000000000000000..391ade3aab00e3173f2ea849ee3db780b937c0a8 --- /dev/null +++ b/db/schema_migrations/20230926092914 @@ -0,0 +1 @@ +0018bc2180eeb632d75132b6d82e959e772ff1e7d8966310858e304d07d4ec34 \ No newline at end of file diff --git a/db/schema_migrations/20230926092944 b/db/schema_migrations/20230926092944 new file mode 100644 index 0000000000000000000000000000000000000000..1fe6c64634ac31cbfecd3bc687c449ca9c5a4479 --- /dev/null +++ b/db/schema_migrations/20230926092944 @@ -0,0 +1 @@ +e2b4cdafd6147740ad43c286d90f7feec9f70d66a510d58a3cc3c33b0d703b49 \ No newline at end of file diff --git a/db/schema_migrations/20230926093004 b/db/schema_migrations/20230926093004 new file mode 100644 index 0000000000000000000000000000000000000000..30407142a30535f9d3cc4a2b05ce7a9df901f1fb --- /dev/null +++ b/db/schema_migrations/20230926093004 @@ -0,0 +1 @@ +d3d90178100e92cffe263715cdfc3c9ddcb47ce804f3ffd92d5bc4326de0244c \ No newline at end of file diff --git a/db/schema_migrations/20230926093025 b/db/schema_migrations/20230926093025 new file mode 100644 index 0000000000000000000000000000000000000000..6a5ef092c69be7ac0210b69c6940929fd319b2a9 --- /dev/null +++ b/db/schema_migrations/20230926093025 @@ -0,0 +1 @@ +840bc159c277271b66f4348c31d912485c04b8ee1b15227c96dcc690f6b93311 \ No newline at end of file diff --git a/db/schema_migrations/20230926093101 b/db/schema_migrations/20230926093101 new file mode 100644 index 0000000000000000000000000000000000000000..2ce67dab37f8cd67b3e2f9830ae13c2acefe86b2 --- /dev/null +++ b/db/schema_migrations/20230926093101 @@ -0,0 +1 @@ +9a560649866367e556cf841e20f981b6c09fe03d1054f0db37cb510fbfbaef13 \ No newline at end of file diff --git a/db/schema_migrations/20230926093144 b/db/schema_migrations/20230926093144 new file mode 100644 index 0000000000000000000000000000000000000000..b383692607fdcbd6b0872768b8523fd74840ccad --- /dev/null +++ b/db/schema_migrations/20230926093144 @@ -0,0 +1 @@ +eba011de5a174a93e5159c765c093d3a6519111769a1ac09b2f996322cf3973e \ No newline at end of file diff --git a/db/schema_migrations/20230926093211 b/db/schema_migrations/20230926093211 new file mode 100644 index 0000000000000000000000000000000000000000..9befd202129aba67e8e11bd6d2fd606c4bb61941 --- /dev/null +++ b/db/schema_migrations/20230926093211 @@ -0,0 +1 @@ +f9659a07b4c7b2d4508f1de231e759cf4e15e684ecaa4231ff6069b4ba203e20 \ No newline at end of file diff --git a/db/schema_migrations/20230926093251 b/db/schema_migrations/20230926093251 new file mode 100644 index 0000000000000000000000000000000000000000..63bb045e4378ab191b9e28a01e941674e588852a --- /dev/null +++ b/db/schema_migrations/20230926093251 @@ -0,0 +1 @@ +9df85930f78c6fa9e02252877d136aab3167a8ac1134cbd321c26f5958899f06 \ No newline at end of file diff --git a/db/schema_migrations/20230926105440 b/db/schema_migrations/20230926105440 new file mode 100644 index 0000000000000000000000000000000000000000..957b7cbbbac216fe9c5cc15868289310c45c1bda --- /dev/null +++ b/db/schema_migrations/20230926105440 @@ -0,0 +1 @@ +0be5d3565d71dc9656fd90dbd404ea0314ff29f6da9ca9ef2d100bcc9515308b \ No newline at end of file diff --git a/db/schema_migrations/20230926105931 b/db/schema_migrations/20230926105931 new file mode 100644 index 0000000000000000000000000000000000000000..f158665e529dea52e5b6b2a80654b579603adbd9 --- /dev/null +++ b/db/schema_migrations/20230926105931 @@ -0,0 +1 @@ +021dbeb0a8c5ebecfa647344b1e99dd1698ae3fb72a8857409551070b23f9f49 \ No newline at end of file diff --git a/db/schema_migrations/20230928145555 b/db/schema_migrations/20230928145555 new file mode 100644 index 0000000000000000000000000000000000000000..860364e57ccce8d62ea99ea037d440d9e99601fd --- /dev/null +++ b/db/schema_migrations/20230928145555 @@ -0,0 +1 @@ +71e2f63bf9a327f62d21c2407b9ccebe779e0fd881266467f180cf285edc326f \ No newline at end of file diff --git a/db/schema_migrations/20230928145637 b/db/schema_migrations/20230928145637 new file mode 100644 index 0000000000000000000000000000000000000000..47d4c9b059377b229eef83be2ceeef1db4e719a6 --- /dev/null +++ b/db/schema_migrations/20230928145637 @@ -0,0 +1 @@ +1e9bf34cc708dd8637e4e636894fb9b7894c6d54832b3b42c88af17c4ed87532 \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index dfddf1dda09cd85aa9af3becee3fd1cf75e62544..c77660f90961ff99dce4eb37e58db87d61fa00ba 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -12009,6 +12009,74 @@ CREATE SEQUENCE application_settings_id_seq ALTER SEQUENCE application_settings_id_seq OWNED BY application_settings.id; +CREATE TABLE approval_group_rules ( + id bigint NOT NULL, + group_id bigint NOT NULL, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + approvals_required smallint DEFAULT 0 NOT NULL, + report_type smallint, + rule_type smallint DEFAULT 1 NOT NULL, + security_orchestration_policy_configuration_id bigint, + scan_result_policy_id bigint, + name text NOT NULL, + CONSTRAINT check_25d42add43 CHECK ((char_length(name) <= 255)) +); + +CREATE TABLE approval_group_rules_groups ( + id bigint NOT NULL, + approval_group_rule_id bigint NOT NULL, + group_id bigint NOT NULL +); + +CREATE SEQUENCE approval_group_rules_groups_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE approval_group_rules_groups_id_seq OWNED BY approval_group_rules_groups.id; + +CREATE SEQUENCE approval_group_rules_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE approval_group_rules_id_seq OWNED BY approval_group_rules.id; + +CREATE TABLE approval_group_rules_protected_branches ( + id bigint NOT NULL, + approval_group_rule_id bigint NOT NULL, + protected_branch_id bigint NOT NULL +); + +CREATE SEQUENCE approval_group_rules_protected_branches_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE approval_group_rules_protected_branches_id_seq OWNED BY approval_group_rules_protected_branches.id; + +CREATE TABLE approval_group_rules_users ( + id bigint NOT NULL, + approval_group_rule_id bigint NOT NULL, + user_id bigint NOT NULL +); + +CREATE SEQUENCE approval_group_rules_users_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + +ALTER SEQUENCE approval_group_rules_users_id_seq OWNED BY approval_group_rules_users.id; + CREATE TABLE approval_merge_request_rule_sources ( id bigint NOT NULL, approval_merge_request_rule_id bigint NOT NULL, @@ -25929,6 +25997,14 @@ ALTER TABLE ONLY application_setting_terms ALTER COLUMN id SET DEFAULT nextval(' ALTER TABLE ONLY application_settings ALTER COLUMN id SET DEFAULT nextval('application_settings_id_seq'::regclass); +ALTER TABLE ONLY approval_group_rules ALTER COLUMN id SET DEFAULT nextval('approval_group_rules_id_seq'::regclass); + +ALTER TABLE ONLY approval_group_rules_groups ALTER COLUMN id SET DEFAULT nextval('approval_group_rules_groups_id_seq'::regclass); + +ALTER TABLE ONLY approval_group_rules_protected_branches ALTER COLUMN id SET DEFAULT nextval('approval_group_rules_protected_branches_id_seq'::regclass); + +ALTER TABLE ONLY approval_group_rules_users ALTER COLUMN id SET DEFAULT nextval('approval_group_rules_users_id_seq'::regclass); + ALTER TABLE ONLY approval_merge_request_rule_sources ALTER COLUMN id SET DEFAULT nextval('approval_merge_request_rule_sources_id_seq'::regclass); ALTER TABLE ONLY approval_merge_request_rules ALTER COLUMN id SET DEFAULT nextval('approval_merge_request_rules_id_seq'::regclass); @@ -27730,6 +27806,18 @@ ALTER TABLE ONLY application_setting_terms ALTER TABLE ONLY application_settings ADD CONSTRAINT application_settings_pkey PRIMARY KEY (id); +ALTER TABLE ONLY approval_group_rules_groups + ADD CONSTRAINT approval_group_rules_groups_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY approval_group_rules + ADD CONSTRAINT approval_group_rules_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY approval_group_rules_protected_branches + ADD CONSTRAINT approval_group_rules_protected_branches_pkey PRIMARY KEY (id); + +ALTER TABLE ONLY approval_group_rules_users + ADD CONSTRAINT approval_group_rules_users_pkey PRIMARY KEY (id); + ALTER TABLE ONLY approval_merge_request_rule_sources ADD CONSTRAINT approval_merge_request_rule_sources_pkey PRIMARY KEY (id); @@ -31105,6 +31193,18 @@ CREATE INDEX idx_mrs_on_target_id_and_created_at_and_state_id ON merge_requests CREATE UNIQUE INDEX idx_namespace_settings_on_default_compliance_framework_id ON namespace_settings USING btree (default_compliance_framework_id); +CREATE UNIQUE INDEX idx_on_approval_group_rules_any_approver_type ON approval_group_rules USING btree (group_id, rule_type) WHERE (rule_type = 4); + +CREATE UNIQUE INDEX idx_on_approval_group_rules_group_id_type_name ON approval_group_rules USING btree (group_id, rule_type, name); + +CREATE UNIQUE INDEX idx_on_approval_group_rules_groups_rule_group ON approval_group_rules_groups USING btree (approval_group_rule_id, group_id); + +CREATE UNIQUE INDEX idx_on_approval_group_rules_protected_branch ON approval_group_rules_protected_branches USING btree (approval_group_rule_id, protected_branch_id); + +CREATE INDEX idx_on_approval_group_rules_security_orch_policy ON approval_group_rules USING btree (security_orchestration_policy_configuration_id); + +CREATE UNIQUE INDEX idx_on_approval_group_rules_users_rule_user ON approval_group_rules_users USING btree (approval_group_rule_id, user_id); + CREATE UNIQUE INDEX idx_on_compliance_management_frameworks_namespace_id_name ON compliance_management_frameworks USING btree (namespace_id, name); CREATE UNIQUE INDEX idx_on_external_approval_rules_project_id_external_url ON external_approval_rules USING btree (project_id, external_url); @@ -31115,6 +31215,8 @@ CREATE UNIQUE INDEX idx_on_external_status_checks_project_id_external_url ON ext CREATE UNIQUE INDEX idx_on_external_status_checks_project_id_name ON external_status_checks USING btree (project_id, name); +CREATE INDEX idx_on_protected_branch ON approval_group_rules_protected_branches USING btree (protected_branch_id); + CREATE INDEX idx_open_issues_on_project_and_confidential_and_author_and_id ON issues USING btree (project_id, confidential, author_id, id) WHERE (state_id = 1); CREATE INDEX idx_packages_debian_group_component_files_on_architecture_id ON packages_debian_group_component_files USING btree (architecture_id); @@ -31341,6 +31443,12 @@ CREATE INDEX index_application_settings_on_usage_stats_set_by_user_id ON applica CREATE INDEX index_applicationsettings_on_instance_administration_project_id ON application_settings USING btree (instance_administration_project_id); +CREATE INDEX index_approval_group_rules_groups_on_group_id ON approval_group_rules_groups USING btree (group_id); + +CREATE INDEX index_approval_group_rules_on_scan_result_policy_id ON approval_group_rules USING btree (scan_result_policy_id); + +CREATE INDEX index_approval_group_rules_users_on_user_id ON approval_group_rules_users USING btree (user_id); + CREATE UNIQUE INDEX index_approval_merge_request_rule_sources_1 ON approval_merge_request_rule_sources USING btree (approval_merge_request_rule_id); CREATE INDEX index_approval_merge_request_rule_sources_2 ON approval_merge_request_rule_sources USING btree (approval_project_rule_id); @@ -36778,6 +36886,9 @@ ALTER TABLE ONLY remote_development_agent_configs ALTER TABLE ONLY dast_sites ADD CONSTRAINT fk_0a57f2271b FOREIGN KEY (dast_site_validation_id) REFERENCES dast_site_validations(id) ON DELETE SET NULL; +ALTER TABLE ONLY approval_group_rules_protected_branches + ADD CONSTRAINT fk_0b85e6c388 FOREIGN KEY (protected_branch_id) REFERENCES protected_branches(id) ON DELETE CASCADE; + ALTER TABLE ONLY issue_customer_relations_contacts ADD CONSTRAINT fk_0c0037f723 FOREIGN KEY (issue_id) REFERENCES issues(id) ON DELETE CASCADE; @@ -36808,6 +36919,9 @@ ALTER TABLE ONLY vulnerabilities ALTER TABLE ONLY vulnerabilities ADD CONSTRAINT fk_131d289c65 FOREIGN KEY (milestone_id) REFERENCES milestones(id) ON DELETE SET NULL; +ALTER TABLE ONLY approval_group_rules + ADD CONSTRAINT fk_1485c451e3 FOREIGN KEY (scan_result_policy_id) REFERENCES scan_result_policies(id) ON DELETE CASCADE; + ALTER TABLE ONLY catalog_resource_versions ADD CONSTRAINT fk_15376d917e FOREIGN KEY (release_id) REFERENCES releases(id) ON DELETE CASCADE; @@ -37057,12 +37171,18 @@ ALTER TABLE ONLY user_achievements ALTER TABLE ONLY vulnerability_reads ADD CONSTRAINT fk_4f593f6c62 FOREIGN KEY (namespace_id) REFERENCES namespaces(id) ON DELETE CASCADE; +ALTER TABLE ONLY approval_group_rules_protected_branches + ADD CONSTRAINT fk_4f85f13b20 FOREIGN KEY (approval_group_rule_id) REFERENCES approval_group_rules(id) ON DELETE CASCADE; + ALTER TABLE ONLY project_compliance_standards_adherence ADD CONSTRAINT fk_4fd1d9d9b0 FOREIGN KEY (namespace_id) REFERENCES namespaces(id) ON DELETE SET NULL; ALTER TABLE ONLY vulnerability_reads ADD CONSTRAINT fk_5001652292 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; +ALTER TABLE ONLY approval_group_rules_groups + ADD CONSTRAINT fk_50edc8134e FOREIGN KEY (group_id) REFERENCES namespaces(id) ON DELETE CASCADE; + ALTER TABLE ONLY alert_management_alerts ADD CONSTRAINT fk_51ab4b6089 FOREIGN KEY (prometheus_alert_id) REFERENCES prometheus_alerts(id) ON DELETE CASCADE; @@ -37141,6 +37261,9 @@ ALTER TABLE ONLY vulnerability_reads ALTER TABLE ONLY merge_requests ADD CONSTRAINT fk_641731faff FOREIGN KEY (updated_by_id) REFERENCES users(id) ON DELETE SET NULL; +ALTER TABLE ONLY approval_group_rules + ADD CONSTRAINT fk_64450bea52 FOREIGN KEY (security_orchestration_policy_configuration_id) REFERENCES security_orchestration_policy_configurations(id) ON DELETE CASCADE; + ALTER TABLE ONLY ci_pipeline_chat_data ADD CONSTRAINT fk_64ebfab6b3 FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE; @@ -37291,6 +37414,9 @@ ALTER TABLE ONLY packages_package_files ALTER TABLE p_ci_builds ADD CONSTRAINT fk_87f4cefcda FOREIGN KEY (upstream_pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE; +ALTER TABLE ONLY approval_group_rules_users + ADD CONSTRAINT fk_888a0df3b7 FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE; + ALTER TABLE ONLY vulnerabilities ADD CONSTRAINT fk_88b4d546ef FOREIGN KEY (start_date_sourcing_milestone_id) REFERENCES milestones(id) ON DELETE SET NULL; @@ -37360,6 +37486,9 @@ ALTER TABLE ONLY protected_branch_merge_access_levels ALTER TABLE ONLY notes ADD CONSTRAINT fk_99e097b079 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; +ALTER TABLE ONLY approval_group_rules_users + ADD CONSTRAINT fk_9a4b673183 FOREIGN KEY (approval_group_rule_id) REFERENCES approval_group_rules(id) ON DELETE CASCADE; + ALTER TABLE ONLY import_failures ADD CONSTRAINT fk_9a9b9ba21c FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE; @@ -37765,6 +37894,9 @@ ALTER TABLE ONLY approval_project_rules ALTER TABLE ONLY vulnerabilities ADD CONSTRAINT fk_efb96ab1e2 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE; +ALTER TABLE ONLY approval_group_rules_groups + ADD CONSTRAINT fk_efff219a48 FOREIGN KEY (approval_group_rule_id) REFERENCES approval_group_rules(id) ON DELETE CASCADE; + ALTER TABLE ONLY emails ADD CONSTRAINT fk_emails_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE; @@ -38590,6 +38722,9 @@ ALTER TABLE ONLY namespace_admin_notes ALTER TABLE ONLY ci_runner_machines ADD CONSTRAINT fk_rails_666b61f04f FOREIGN KEY (runner_id) REFERENCES ci_runners(id) ON DELETE CASCADE; +ALTER TABLE ONLY approval_group_rules + ADD CONSTRAINT fk_rails_6727675176 FOREIGN KEY (group_id) REFERENCES namespaces(id) ON DELETE CASCADE; + ALTER TABLE ONLY jira_imports ADD CONSTRAINT fk_rails_675d38c03b FOREIGN KEY (label_id) REFERENCES labels(id) ON DELETE SET NULL;