Extract merge request approvals settings into its own table
From !46637 (comment 441168749)
disable_overriding_approvers_per_merge_request has some technical debt:
- This seems to be a project setting rather than an attribute of
project. Have considered movingdisable_overriding_approvers_per_merge_requesttoproject_settingstable?
gitlabhq_development=# \d project_settings;
Table "public.project_settings"
Column | Type | Collation | Nullable | Default
---------------------------------+--------------------------+-----------+----------+---------
project_id | integer | | not null |
...
Or perhaps creating a new table for project approval settings (project_approval_settings perhaps) and store the approval settings there? Rationale behind is that projects is one of our largest tables in GitLab.com, as such there's a performance impact when it comes to reading information from a wide table, we'll always need to read the whole record from disk and not part of it.
- The double-negative semantics always feels a little confusing to me (
disable_overriding_approvers_per_merge_request = true), I wonder if we could just useoverriding_approvers_per_merge_request, so:
-
overriding_approvers_per_merge_request = falsedisables the override -
overriding_approvers_per_merge_request = trueenables the override
Which I believe it's easier to grasp than:
-
disable_overriding_approvers_per_merge_request = trueenables the disable override -
disable_overriding_approvers_per_merge_request = falsedisable the disable override
High-level proposal
- Create
merge_request_approval_settingsand store the approval settings there - Rename
disable_overriding_approvers_per_merge_requesttooverriding_approvers_per_merge_request
Edited by 🤖 GitLab Bot 🤖