summaryrefslogtreecommitdiff
path: root/doc/development/database/database_dictionary.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/development/database/database_dictionary.md')
-rw-r--r--doc/development/database/database_dictionary.md115
1 files changed, 90 insertions, 25 deletions
diff --git a/doc/development/database/database_dictionary.md b/doc/development/database/database_dictionary.md
index d74d7e77edb..b7e6fa4b5b3 100644
--- a/doc/development/database/database_dictionary.md
+++ b/doc/development/database/database_dictionary.md
@@ -17,7 +17,7 @@ For the `geo` database, the dictionary files are stored under `ee/db/docs/`.
## Example dictionary file
```yaml
----
+----
table_name: terraform_states
classes:
- Terraform::State
@@ -28,45 +28,110 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/26619
milestone: '13.0'
```
-## Schema
+## Adding tables
-| Attribute | Type | Required | Description |
-|----------------------------|---------------|----------|-----------------------------------------------------------------------------------|
-| `table_name` / `view_name` | String | yes | Database table name or view name |
-| `classes` | Array(String) | no | List of classes that are associated to this table or view. |
-| `feature_categories` | Array(String) | yes | List of feature categories using this table or view. |
-| `description` | String | no | Text description of the information stored in the table or view, and its purpose. |
-| `introduced_by_url` | URL | no | URL to the merge request or commit which introduced this table or view. |
-| `milestone` | String | no | The milestone that introduced this table or view. |
-| `gitlab_schema` | String | yes | GitLab schema name. |
+### Schema
-## Adding tables
+| Attribute | Type | Required | Description |
+|----------------------------|---------------|----------|-------------|
+| `table_name` | String | yes | Database table name. |
+| `classes` | Array(String) | no | List of classes that are associated to this table. |
+| `feature_categories` | Array(String) | yes | List of feature categories using this table. |
+| `description` | String | no | Text description of the information stored in the table, and its purpose. |
+| `introduced_by_url` | URL | no | URL to the merge request or commit which introduced this table. |
+| `milestone` | String | no | The milestone that introduced this table. |
+| `gitlab_schema` | String | yes | GitLab schema name. |
-When adding a new table, create a new file under `db/docs/` for the `main` and `ci` databases.
-For the `geo` database use `ee/db/docs/`.
-Name the file as `<table_name>.yml`, containing as much information as you know about the table.
+### Process
-Include this file in the commit with the migration that creates the table.
+When adding a table, you should:
+
+1. Create a new file for this table in the appropriate directory:
+ - `gitlab_main` table: `db/docs/`
+ - `gitlab_ci` table: `db/docs/`
+ - `gitlab_shared` table: `db/docs/`
+ - `gitlab_geo` table: `ee/db/docs/`
+1. Name the file `<table_name>.yml`, and include as much information as you know about the table.
+1. Include this file in the commit with the migration that creates the table.
## Dropping tables
-When dropping a table, you must remove the metadata file from `db/docs/` for `main` and `ci` databases.
-For the `geo` database, you must remove the file from `ee/db/docs/`.
-Use the same commit with the migration that drops the table.
+### Schema
+
+| Attribute | Type | Required | Description |
+|----------------------------|---------------|----------|-------------|
+| `table_name` | String | yes | Database table name. |
+| `classes` | Array(String) | no | List of classes that are associated to this table. |
+| `feature_categories` | Array(String) | yes | List of feature categories using this table. |
+| `description` | String | no | Text description of the information stored in the table, and its purpose. |
+| `introduced_by_url` | URL | no | URL to the merge request or commit which introduced this table. |
+| `milestone` | String | no | The milestone that introduced this table. |
+| `gitlab_schema` | String | yes | GitLab schema name. |
+| `removed_by_url` | String | yes | URL to the merge request or commit which removed this table. |
+| `removed_in_milestone` | String | yes | The milestone that removes this table. |
+
+### Process
+
+When dropping a table, you should:
+
+1. Move the dictionary file for this table to the `deleted_tables` directory:
+ - `gitlab_main` table: `db/docs/deleted_tables/`
+ - `gitlab_ci` table: `db/docs/deleted_tables/`
+ - `gitlab_shared` table: `db/docs/deleted_tables/`
+ - `gitlab_geo` table: `ee/db/docs/deleted_tables/`
+1. Add the fields `removed_by_url` and `removed_in_milestone` to the dictionary file.
+1. Include this change in the commit with the migration that drops the table.
## Adding views
+### Schema
+
+| Attribute | Type | Required | Description |
+|----------------------------|---------------|----------|-------------|
+| `table_name` | String | yes | Database view name. |
+| `classes` | Array(String) | no | List of classes that are associated to this view. |
+| `feature_categories` | Array(String) | yes | List of feature categories using this view. |
+| `description` | String | no | Text description of the information stored in the view, and its purpose. |
+| `introduced_by_url` | URL | no | URL to the merge request or commit which introduced this view. |
+| `milestone` | String | no | The milestone that introduced this view. |
+| `gitlab_schema` | String | yes | GitLab schema name. |
+
+### Process
+
When adding a new view, you should:
1. Create a new file for this view in the appropriate directory:
- - `main` database: `db/docs/views/`
- - `ci` database: `db/docs/views/`
- - `geo` database: `ee/db/docs/views/`
+ - `gitlab_main` view: `db/docs/views/`
+ - `gitlab_ci` view: `db/docs/views/`
+ - `gitlab_shared` view: `db/docs/views/`
+ - `gitlab_geo` view: `ee/db/docs/views/`
1. Name the file `<view_name>.yml`, and include as much information as you know about the view.
1. Include this file in the commit with the migration that creates the view.
## Dropping views
-When dropping a view, you must remove the metadata file from `db/docs/views/`.
-For the `geo` database, you must remove the file from `ee/db/docs/views/`.
-Use the same commit with the migration that drops the view.
+## Schema
+
+| Attribute | Type | Required | Description |
+|----------------------------|---------------|----------|-------------|
+| `view_name` | String | yes | Database view name. |
+| `classes` | Array(String) | no | List of classes that are associated to this view. |
+| `feature_categories` | Array(String) | yes | List of feature categories using this view. |
+| `description` | String | no | Text description of the information stored in the view, and its purpose. |
+| `introduced_by_url` | URL | no | URL to the merge request or commit which introduced this view. |
+| `milestone` | String | no | The milestone that introduced this view. |
+| `gitlab_schema` | String | yes | GitLab schema name. |
+| `removed_by_url` | String | yes | URL to the merge request or commit which removed this view. |
+| `removed_in_milestone` | String | yes | The milestone that removes this view. |
+
+### Process
+
+When dropping a view, you should:
+
+1. Move the dictionary file for this table to the `deleted_views` directory:
+ - `gitlab_main` view: `db/docs/deleted_views/`
+ - `gitlab_ci` view: `db/docs/deleted_views/`
+ - `gitlab_shared` view: `db/docs/deleted_views/`
+ - `gitlab_geo` view: `ee/db/docs/deleted_views/`
+1. Add the fields `removed_by_url` and `removed_in_milestone` to the dictionary file.
+1. Include this change in the commit with the migration that drops the view.