From a7c0b31ea16cc45869b9891eb31190edf0aebd44 Mon Sep 17 00:00:00 2001 From: fflorent Date: Mon, 15 Apr 2024 17:06:07 +0200 Subject: [PATCH 01/11] Start documenting the databases --- documentation/database.md | 125 +++++ documentation/images/homedb-schema.svg | 609 +++++++++++++++++++++++++ 2 files changed, 734 insertions(+) create mode 100644 documentation/database.md create mode 100644 documentation/images/homedb-schema.svg diff --git a/documentation/database.md b/documentation/database.md new file mode 100644 index 00000000..1f9d0472 --- /dev/null +++ b/documentation/database.md @@ -0,0 +1,125 @@ +# Database + +First of all, let's explicit two databases that Grist manages: +1. The Home Database; +2. The Document Database (aka the grist document); + +The Home database is responsible for things related to the instance, like: + - the users and the groups registered on the instance; + - the billing; + - the organisations (aka sites), the workspaces; + - the documents metadata (id, name, workspace under which it is located...); + - the rights (ACL) to access to organisations, workspaces and documents (the access to the content of the document is controlled by the document itself); + +A Grist Document is a Sqlite database which contains data like: + - The tables, pages, views data; + - The ACL *inside* to access to all or part of tables (rows or columns); + +## The Document Database + +### Inspecting the Document + +A Grist Document (with the `.grist` extension) is actually a sqlite database. You may download a document like [this one](https://api.getgrist.com/o/templates/api/docs/keLK5sVeyfPkxyaXqijz2x/download?template=false&nohistory=false) and inspect its content using the `sqlite3` command: + +```` +$ sqlite3 Flashcards.grist +sqlite> .tables +Flashcards_Data _grist_TabBar +Flashcards_Data_summary_Card_Set _grist_TabItems +GristDocTour _grist_TableViews +_grist_ACLMemberships _grist_Tables +_grist_ACLPrincipals _grist_Tables_column +_grist_ACLResources _grist_Triggers +_grist_ACLRules _grist_Validations +_grist_Attachments _grist_Views +_grist_Cells _grist_Views_section +_grist_DocInfo _grist_Views_section_field +_grist_External_database _gristsys_Action +_grist_External_table _gristsys_ActionHistory +_grist_Filters _gristsys_ActionHistoryBranch +_grist_Imports _gristsys_Action_step +_grist_Pages _gristsys_FileInfo +_grist_REPL_Hist _gristsys_Files +_grist_Shares _gristsys_PluginData +```` + +:warning: Be sure to work on a copy of a document if you inspect its content, otherwise you may loose data. + +### The migrations + +The migrations are handled in the python sandbox in this code: +https://github.com/gristlabs/grist-core/blob/main/sandbox/grist/migrations.py + +For more information, please consult [the documentation for migrations](./migrations.md). + +## The Home Database + +The home database may either be a sqlite or a postgresql database depending on how the Grist instance has been installed. You may check the `TYPEORM_*` env variables in the [README](https://github.com/gristlabs/grist-core/blob/main/README.md). + +Unless otherwise configured, the home database is a sqlite file. In docker, it is stored in `/persist/home.sqlite3`. + +The schema below is the same (except minor differences in the column types) whatever the database type is. + +### The Schema + +As of 2024-04-15, the database schema is the following (it may have changed in the meantime): + +![Schema of the home database](./images/homedb-schema.svg) + +> [!NOTE] +> For simplicity's sake, we have removed tables related to the billing, nor to the migrations. + +If you want to generate the above schema by yourself, you may run the following command using [SchemaCrawler](https://www.schemacrawler.com/) ([a docker image is available for a quick run](https://www.schemacrawler.com/docker-image.html)): +````bash +# You may adapt the --database argument to fit with the actual file name +# You may also remove the `--grep-tables` option and all that follows to get the full schema. +$ schemacrawler --server=sqlite --database=landing.db --info-level=standard --portable-names --command=schema --output-format=svg --output-file=/tmp/graph.svg --grep-tables="products|billing_accounts|limits|billing_account_managers|activations|migrations" --invert-match +```` + +### `orgs` table + +Tables whose rows represent organisations (also called "Team sites"). + +| Column name | Description | +| ------------- | -------------- | +| id | The primary key | +| name | The name as displayed in the UI | +| domain | The part that should be added in the URL | +| owner | The id of the user who owns the org | +| host | ??? | + +### `workspaces` table + +Tables whose rows represent workspaces + +| Column name | Description | +| ------------- | -------------- | +| id | The primary key | +| name | The name as displayed in the UI | +| org_id | The organisation to which the workspace belongs | +| removed_at | If not null, stores the date when the workspaces has been placed in the trash (it will be hard deleted after 30 days) | + + +### `docs` table + +Tables whose rows represent documents + +| Column name | Description | +| ------------- | -------------- | +| id | The primary key | +| name | The name as displayed in the UI | +| workspace_id | The workspace to which the document belongs | +| is_pinned | Whether the document has been pinned or not | +| url_id | Short version of the `id`, as displayed in the URL | +| removed_at | If not null, stores the date when the workspaces has been placed in the trash (it will be hard deleted after 30 days) | +| options | Serialized options as described in [DocumentOptions](https://github.com/gristlabs/grist-core/blob/4567fad94787c20f65db68e744c47d5f44b932e4/app/common/UserAPI.ts#L125-L135) | +| grace_period_start | Specific to getgrist.com (TODO describe it) | +| usage | stats about the document (see [DocumentUsage](https://github.com/gristlabs/grist-core/blob/4567fad94787c20f65db68e744c47d5f44b932e4/app/common/DocUsage.ts)) | +| trunk_id | If set, the current document is a fork (as of 2024-04-15, only from a tutorial), and this column references the original document | +| type | If set, the current document is a special one (as specified in [DocumentType](https://github.com/gristlabs/grist-core/blob/4567fad94787c20f65db68e744c47d5f44b932e4/app/common/UserAPI.ts#L123)) | + + +### The migrations + +The database migrations are handled by TypeORM ([documentation](https://typeorm.io/migrations)). The migration files are located at `app/gen-server/migration` and are run at startup (so you don't have to worry about running them yourself). + diff --git a/documentation/images/homedb-schema.svg b/documentation/images/homedb-schema.svg new file mode 100644 index 00000000..eed9fc31 --- /dev/null +++ b/documentation/images/homedb-schema.svg @@ -0,0 +1,609 @@ + + + + + + +SchemaCrawler_Diagram + +generated by +SchemaCrawler 16.21.2 +generated on +2024-04-15 14:21:22 + + + +acl_rules_53bd8961 + +acl_rules + +[table] +id + +INTEGER NOT NULL + +auto-incremented +permissions + +INTEGER NOT NULL +type + +VARCHAR NOT NULL +workspace_id + +INTEGER +org_id + +INTEGER +doc_id + +VARCHAR +group_id + +INTEGER + + + + +docs_2f969a + +docs + +[table] +id + +VARCHAR NOT NULL +name + +VARCHAR NOT NULL +created_at + +DATETIME NOT NULL +updated_at + +DATETIME NOT NULL +workspace_id + +INTEGER +is_pinned + +BOOLEAN NOT NULL +url_id + +VARCHAR +removed_at + +DATETIME +options + +VARCHAR +grace_period_start + +DATETIME +usage + +VARCHAR +created_by + +INTEGER +trunk_id + +TEXT +type + +TEXT + + + + +acl_rules_53bd8961:w->docs_2f969a:e + + + + + + + + + + +groups_b63e4e33 + +groups + +[table] +id + +INTEGER NOT NULL + +auto-incremented +name + +VARCHAR NOT NULL + + + + +acl_rules_53bd8961:w->groups_b63e4e33:e + + + + + + + + + + +orgs_34a26e + +orgs + +[table] +id + +INTEGER NOT NULL + +auto-incremented +name + +VARCHAR NOT NULL +domain + +VARCHAR +created_at + +DATETIME NOT NULL +updated_at + +DATETIME NOT NULL +owner_id + +INTEGER +billing_account_id + +INTEGER +host + +VARCHAR + + + + +acl_rules_53bd8961:w->orgs_34a26e:e + + + + + + + + + + +workspaces_e61add + +workspaces + +[table] +id + +INTEGER NOT NULL + +auto-incremented +name + +VARCHAR NOT NULL +created_at + +DATETIME NOT NULL +updated_at + +DATETIME NOT NULL +org_id + +INTEGER +removed_at + +DATETIME + + + + +acl_rules_53bd8961:w->workspaces_e61add:e + + + + + + + + + + +aliases_c97dc35d + +aliases + +[table] +url_id + +VARCHAR NOT NULL +org_id + +INTEGER NOT NULL +doc_id + +VARCHAR +created_at + +DATETIME NOT NULL + + + + +aliases_c97dc35d:w->docs_2f969a:e + + + + + + + + + + +aliases_c97dc35d:w->orgs_34a26e:e + + + + + + + + + + +docs_2f969a:w->docs_2f969a:e + + + + + + + + + + +docs_2f969a:w->workspaces_e61add:e + + + + + + + + + + +users_6a70267 + +users + +[table] +id + +INTEGER NOT NULL + +auto-incremented +name + +VARCHAR NOT NULL +api_key + +VARCHAR +picture + +VARCHAR +first_login_at + +DATETIME +is_first_time_user + +INTEGER NOT NULL +options + +VARCHAR +connect_id + +VARCHAR +"ref" + +VARCHAR NOT NULL + + + + +docs_2f969a:w->users_6a70267:e + + + + + + + + + + +secrets_756efc22 + +secrets + +[table] +id + +VARCHAR NOT NULL +"value" + +VARCHAR NOT NULL +doc_id + +VARCHAR NOT NULL + + + + +secrets_756efc22:w->docs_2f969a:e + + + + + + + + + + +shares_ca2520d3 + +shares + +[table] +id + +INTEGER NOT NULL + +auto-incremented +key + +VARCHAR NOT NULL +doc_id + +VARCHAR NOT NULL +link_id + +VARCHAR NOT NULL +options + +VARCHAR NOT NULL + + + + +shares_ca2520d3:w->docs_2f969a:e + + + + + + + + + + +group_groups_dfa1d7f3 + +group_groups + +[table] +group_id + +INTEGER NOT NULL +subgroup_id + +INTEGER NOT NULL + + + + +group_groups_dfa1d7f3:w->groups_b63e4e33:e + + + + + + + + + + +group_groups_dfa1d7f3:w->groups_b63e4e33:e + + + + + + + + + + +group_users_41cb40a7 + +group_users + +[table] +group_id + +INTEGER NOT NULL +user_id + +INTEGER NOT NULL + + + + +group_users_41cb40a7:w->groups_b63e4e33:e + + + + + + + + + + +group_users_41cb40a7:w->users_6a70267:e + + + + + + + + + + +logins_be987289 + +logins + +[table] +id + +INTEGER NOT NULL + +auto-incremented +user_id + +INTEGER NOT NULL +email + +VARCHAR NOT NULL +display_email + +VARCHAR NOT NULL + + + + +logins_be987289:w->users_6a70267:e + + + + + + + + + + +id_dc7c64b2 +billing_accounts.id + + + +orgs_34a26e:w->id_dc7c64b2:e + + + + + + + + + + +orgs_34a26e:w->users_6a70267:e + + + + + + + + + + + +prefs_660170f + +prefs + +[table] +org_id + +INTEGER +user_id + +INTEGER +prefs + +VARCHAR NOT NULL + + + + +prefs_660170f:w->orgs_34a26e:e + + + + + + + + + + +prefs_660170f:w->users_6a70267:e + + + + + + + + + + +workspaces_e61add:w->orgs_34a26e:e + + + + + + + + + + +user_id_2d5fdf94 +billing_account_managers.user_id + + + +user_id_2d5fdf94:w->users_6a70267:e + + + + + + + + + + From d4cb4bd63783ffb37231f1da30125e7cb995096f Mon Sep 17 00:00:00 2001 From: fflorent Date: Mon, 15 Apr 2024 18:43:01 +0200 Subject: [PATCH 02/11] document ACL and other tables --- documentation/database.md | 84 +++++++++++++++++++++++++++++---------- 1 file changed, 63 insertions(+), 21 deletions(-) diff --git a/documentation/database.md b/documentation/database.md index 1f9d0472..2a2bbbe3 100644 --- a/documentation/database.md +++ b/documentation/database.md @@ -24,22 +24,22 @@ A Grist Document (with the `.grist` extension) is actually a sqlite database. Yo ```` $ sqlite3 Flashcards.grist sqlite> .tables -Flashcards_Data _grist_TabBar -Flashcards_Data_summary_Card_Set _grist_TabItems -GristDocTour _grist_TableViews -_grist_ACLMemberships _grist_Tables -_grist_ACLPrincipals _grist_Tables_column -_grist_ACLResources _grist_Triggers -_grist_ACLRules _grist_Validations -_grist_Attachments _grist_Views -_grist_Cells _grist_Views_section -_grist_DocInfo _grist_Views_section_field -_grist_External_database _gristsys_Action -_grist_External_table _gristsys_ActionHistory -_grist_Filters _gristsys_ActionHistoryBranch -_grist_Imports _gristsys_Action_step -_grist_Pages _gristsys_FileInfo -_grist_REPL_Hist _gristsys_Files +Flashcards_Data _grist_TabBar +Flashcards_Data_summary_Card_Set _grist_TabItems +GristDocTour _grist_TableViews +_grist_ACLMemberships _grist_Tables +_grist_ACLPrincipals _grist_Tables_column +_grist_ACLResources _grist_Triggers +_grist_ACLRules _grist_Validations +_grist_Attachments _grist_Views +_grist_Cells _grist_Views_section +_grist_DocInfo _grist_Views_section_field +_grist_External_database _gristsys_Action +_grist_External_table _gristsys_ActionHistory +_grist_Filters _gristsys_ActionHistoryBranch +_grist_Imports _gristsys_Action_step +_grist_Pages _gristsys_FileInfo +_grist_REPL_Hist _gristsys_Files _grist_Shares _gristsys_PluginData ```` @@ -48,7 +48,7 @@ _grist_Shares _gristsys_PluginData ### The migrations The migrations are handled in the python sandbox in this code: -https://github.com/gristlabs/grist-core/blob/main/sandbox/grist/migrations.py +https://github.com/gristlabs/grist-core/blob/main/sandbox/grist/migrations.py For more information, please consult [the documentation for migrations](./migrations.md). @@ -76,7 +76,7 @@ If you want to generate the above schema by yourself, you may run the following $ schemacrawler --server=sqlite --database=landing.db --info-level=standard --portable-names --command=schema --output-format=svg --output-file=/tmp/graph.svg --grep-tables="products|billing_accounts|limits|billing_account_managers|activations|migrations" --invert-match ```` -### `orgs` table +### `orgs` table Tables whose rows represent organisations (also called "Team sites"). @@ -88,7 +88,7 @@ Tables whose rows represent organisations (also called "Team sites"). | owner | The id of the user who owns the org | | host | ??? | -### `workspaces` table +### `workspaces` table Tables whose rows represent workspaces @@ -100,7 +100,7 @@ Tables whose rows represent workspaces | removed_at | If not null, stores the date when the workspaces has been placed in the trash (it will be hard deleted after 30 days) | -### `docs` table +### `docs` table Tables whose rows represent documents @@ -118,8 +118,50 @@ Tables whose rows represent documents | trunk_id | If set, the current document is a fork (as of 2024-04-15, only from a tutorial), and this column references the original document | | type | If set, the current document is a special one (as specified in [DocumentType](https://github.com/gristlabs/grist-core/blob/4567fad94787c20f65db68e744c47d5f44b932e4/app/common/UserAPI.ts#L123)) | +### `aliases` table -### The migrations +Aliases for documents. + +FIXME: What's the difference between `docs.url_id` and `alias.url_id`? + +| Column name | Description | +| ------------- | -------------- | +| url_id | The URL alias for the doc_id | +| org_id | The organisation to which the document belong to | +| doc_id | The document id | + +### `acl_rules` table + +Permissions for to access either a document, workspace or an organisation. + +| Column name | Description | +| ------------- | -------------- | +| id | The primary key | +| permissions | The permissions granted to the group. see below. | +| type | Either equals to `ACLRuleOrg`, `ACLRuleWs` or `ACLRuleDoc` | +| org_id | The org id associated to this ACL (if set, workspace_id and doc_id are null) | +| workspace_id | The workspace id associated to this ACL (if set, doc_id and org_id are null) | +| doc_id | The document id associated to this ACL (if set, workspace_id and org_id are null) | +| group_id | The group of users for which the ACL applies | + +The permissions are stored as an integer which is read in its binary form which allows to make bitwise operations: + +| VIEW | UPDATE | ADD | REMOVE | SCHEMA_EDIT | ACL_EDIT | (reserved) | PUBLIC | +| --------------- | --------------- | --------------- | --------------- | --------------- | ---------- | --------- | ---- | +| can view | can update | can add | can remove | can change schema of tables | can edit the ACL (docs) or manage the teams (orgs and workspaces) of the resource | (reserved bit for the future) | virtual bit meaning that the resource is shared publicly | +| +0b00000001 | +0b00000010 | +0b00000100 | +0b00001000 | +0b00010000 | +0b00100000 | +0b01000000 | +0b10000000 | + +You notice that the permissions can be then composed: + - EDITOR permissions = `VIEW | UPDATE | ADD | REMOVE` = `0b00000001+0b00000010+0b00000100+0b00001000` = `0b00001111` = `15` + - ADMIN permissions = `EDITOR | SCHEMA_EDIT` = `0b00001111+0b00010000` = `0b00011111` = `31` + - ... + +For more details about that part, please refer [to the code](https://github.com/gristlabs/grist-core/blob/192e2f36ba77ec67069c58035d35205978b9215e/app/gen-server/lib/Permissions.ts). + + +### `prefs` table + +### The migrations The database migrations are handled by TypeORM ([documentation](https://typeorm.io/migrations)). The migration files are located at `app/gen-server/migration` and are run at startup (so you don't have to worry about running them yourself). From 15bc4524a28f343274ea71f2bd18ffaac8a80db2 Mon Sep 17 00:00:00 2001 From: fflorent Date: Mon, 15 Apr 2024 19:04:36 +0200 Subject: [PATCH 03/11] Permissions: orient vertically the table --- documentation/database.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/documentation/database.md b/documentation/database.md index 2a2bbbe3..079c5278 100644 --- a/documentation/database.md +++ b/documentation/database.md @@ -146,10 +146,16 @@ Permissions for to access either a document, workspace or an organisation. The permissions are stored as an integer which is read in its binary form which allows to make bitwise operations: -| VIEW | UPDATE | ADD | REMOVE | SCHEMA_EDIT | ACL_EDIT | (reserved) | PUBLIC | -| --------------- | --------------- | --------------- | --------------- | --------------- | ---------- | --------- | ---- | -| can view | can update | can add | can remove | can change schema of tables | can edit the ACL (docs) or manage the teams (orgs and workspaces) of the resource | (reserved bit for the future) | virtual bit meaning that the resource is shared publicly | -| +0b00000001 | +0b00000010 | +0b00000100 | +0b00001000 | +0b00010000 | +0b00100000 | +0b01000000 | +0b10000000 | +| Name | Value (binary) | Description | +| --------------- | --------------- | --------------- | +| VIEW | +0b00000001 | can view | +| UPDATE | +0b00000010 | can update | +| ADD | +0b00000100 | can add | +| REMOVE | +0b00001000 | can remove | +| SCHEMA_EDIT | +0b00010000 | can change schema of tables | +| ACL_EDIT | +0b00100000 | can edit the ACL (docs) or manage the teams (orgs and workspaces) of the resource | +| (reserved) | +0b01000000 | (reserved bit for the future) | +| PUBLIC | +0b10000000 | virtual bit meaning that the resource is shared publicly | You notice that the permissions can be then composed: - EDITOR permissions = `VIEW | UPDATE | ADD | REMOVE` = `0b00000001+0b00000010+0b00000100+0b00001000` = `0b00001111` = `15` @@ -158,7 +164,6 @@ You notice that the permissions can be then composed: For more details about that part, please refer [to the code](https://github.com/gristlabs/grist-core/blob/192e2f36ba77ec67069c58035d35205978b9215e/app/gen-server/lib/Permissions.ts). - ### `prefs` table ### The migrations From 2c0b964f796c1066bbd706c5c2da9fd5115f8bf5 Mon Sep 17 00:00:00 2001 From: fflorent Date: Mon, 15 Apr 2024 21:10:32 +0200 Subject: [PATCH 04/11] document groups, secrets, and other tables --- documentation/database.md | 74 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 2 deletions(-) diff --git a/documentation/database.md b/documentation/database.md index 079c5278..37862100 100644 --- a/documentation/database.md +++ b/documentation/database.md @@ -155,17 +155,87 @@ The permissions are stored as an integer which is read in its binary form which | SCHEMA_EDIT | +0b00010000 | can change schema of tables | | ACL_EDIT | +0b00100000 | can edit the ACL (docs) or manage the teams (orgs and workspaces) of the resource | | (reserved) | +0b01000000 | (reserved bit for the future) | -| PUBLIC | +0b10000000 | virtual bit meaning that the resource is shared publicly | +| PUBLIC | +0b10000000 | virtual bit meaning that the resource is shared publicly (not currently used) | You notice that the permissions can be then composed: - EDITOR permissions = `VIEW | UPDATE | ADD | REMOVE` = `0b00000001+0b00000010+0b00000100+0b00001000` = `0b00001111` = `15` - ADMIN permissions = `EDITOR | SCHEMA_EDIT` = `0b00001111+0b00010000` = `0b00011111` = `31` - - ... + - OWNER permissions = `ADMIN | ACL_EDIT` = `0b00011111+0b00100000` = `0b0011111` = `63` For more details about that part, please refer [to the code](https://github.com/gristlabs/grist-core/blob/192e2f36ba77ec67069c58035d35205978b9215e/app/gen-server/lib/Permissions.ts). +### `secrets` table + +Stores secret informations related to documents, so the document may not store them (otherwise someone who downloads a doc may access them). Used to store the unsubscribe key and the target url of Webhooks. + +| Column name | Description | +| ------------- | -------------- | +| id | The primary key | +| value | The value of the secret (despite the table name, its stored unencrypted) | +| doc_id | The document id | + ### `prefs` table +Stores special grants for documents for anyone having the key. + +| Column name | Description | +| ------------- | -------------- | +| id | The primary key | +| key | A long string secret to identify the share. Suitable for URLs. Unique across the database / installation. | +| link_id | A string to identify the share. This identifier is common to the home database and the document specified by docId. It need only be unique within that document, and is not a secret. | doc_id | The document to which the share belongs | +| options | Any overall qualifiers on the share | + +For more information, please refer [to the comments in the code](https://github.com/gristlabs/grist-core/blob/192e2f36ba77ec67069c58035d35205978b9215e/app/gen-server/entity/Share.ts). + +### `groups` table + +The groups are entities that may contain either other groups and/or users. + +| Column name | Description | +|--------------- | --------------- | +| id | The primary key | +| name | The name (see the 5 types of groups below) | + +As of 2024-04-15, only 5 types of groups exist, which corresponds actually to Roles (for the permission, please refer to the section detailing the `acl_rules` tables): + - `owners` (see the `OWNERS` permissions) + - `editors` (see the `EDITORS` permissions) + - `viewers` (see the `VIEWS` permissions) + - `members` + - `guests` + +`viewers`, `members` and `guests` have basically the same rights (like viewers), the only difference between them is that: + - `viewers` are explicitly allowed to view the resource and its descendants; + - `members` are specific to the organisations and are meant to allow access to be granted to individual documents or workspaces, rather than the full team site. + - `guests` are (FIXME: help please on this one :)) + +Each time a resource is created, the groups corresponding to the roles above are created (except the `members` which are specific to organisations). + +### `group_groups` table + +The table which allows groups to contain other groups. It also holds the inheritances (see below). + +| Column name | Description | +|--------------- | --------------- | +| group_id | The id of the group containing the subgroup | +| subgroup_id | The id of the subgroup | + +### `user_groups` table + +The table which assigns users to groups. + +| Column name | Description | +|--------------- | --------------- | +| group_id | The id of the group containing the user | +| user_id | The id of the user | + +### `groups`, `group_groups`, `user_groups` and inheritances + +We mentioned earlier that the groups currently holds the roles with the associated permissions. + +> [!WARNING] +> + + ### The migrations The database migrations are handled by TypeORM ([documentation](https://typeorm.io/migrations)). The migration files are located at `app/gen-server/migration` and are run at startup (so you don't have to worry about running them yourself). From b70bbe66ee169b5815f12dfbc45c295d880dfcae Mon Sep 17 00:00:00 2001 From: fflorent Date: Mon, 29 Apr 2024 19:19:04 +0200 Subject: [PATCH 05/11] Finish documenting the database --- documentation/database.md | 61 ++++++++++++++++-- documentation/develop.md | 1 + .../BDD-doc-inheritance-after-change.png | Bin 0 -> 248123 bytes .../images/BDD-doc-inheritance-default.png | Bin 0 -> 240136 bytes .../images/ws-users-management-popup.png | Bin 0 -> 31918 bytes 5 files changed, 55 insertions(+), 7 deletions(-) create mode 100644 documentation/images/BDD-doc-inheritance-after-change.png create mode 100644 documentation/images/BDD-doc-inheritance-default.png create mode 100644 documentation/images/ws-users-management-popup.png diff --git a/documentation/database.md b/documentation/database.md index 37862100..545dcd2c 100644 --- a/documentation/database.md +++ b/documentation/database.md @@ -1,5 +1,10 @@ # Database +> [!WARNING] +> This documentation is meant to describe the state of the database. The reader should be aware that some undocumented changes may have been done after its last updates, and for this purpose should check the git history of this file. +> +> Also contributions are welcome! :heart: + First of all, let's explicit two databases that Grist manages: 1. The Home Database; 2. The Document Database (aka the grist document); @@ -62,7 +67,7 @@ The schema below is the same (except minor differences in the column types) what ### The Schema -As of 2024-04-15, the database schema is the following (it may have changed in the meantime): +The database schema is the following: ![Schema of the home database](./images/homedb-schema.svg) @@ -115,7 +120,7 @@ Tables whose rows represent documents | options | Serialized options as described in [DocumentOptions](https://github.com/gristlabs/grist-core/blob/4567fad94787c20f65db68e744c47d5f44b932e4/app/common/UserAPI.ts#L125-L135) | | grace_period_start | Specific to getgrist.com (TODO describe it) | | usage | stats about the document (see [DocumentUsage](https://github.com/gristlabs/grist-core/blob/4567fad94787c20f65db68e744c47d5f44b932e4/app/common/DocUsage.ts)) | -| trunk_id | If set, the current document is a fork (as of 2024-04-15, only from a tutorial), and this column references the original document | +| trunk_id | If set, the current document is a fork (only from a tutorial), and this column references the original document | | type | If set, the current document is a special one (as specified in [DocumentType](https://github.com/gristlabs/grist-core/blob/4567fad94787c20f65db68e744c47d5f44b932e4/app/common/UserAPI.ts#L123)) | ### `aliases` table @@ -196,7 +201,7 @@ The groups are entities that may contain either other groups and/or users. | id | The primary key | | name | The name (see the 5 types of groups below) | -As of 2024-04-15, only 5 types of groups exist, which corresponds actually to Roles (for the permission, please refer to the section detailing the `acl_rules` tables): +Only 5 types of groups exist, which corresponds actually to Roles (for the permission, please refer to the section detailing the `acl_rules` tables): - `owners` (see the `OWNERS` permissions) - `editors` (see the `EDITORS` permissions) - `viewers` (see the `VIEWS` permissions) @@ -210,7 +215,7 @@ As of 2024-04-15, only 5 types of groups exist, which corresponds actually to Ro Each time a resource is created, the groups corresponding to the roles above are created (except the `members` which are specific to organisations). -### `group_groups` table +### `group_groups` table The table which allows groups to contain other groups. It also holds the inheritances (see below). @@ -219,7 +224,7 @@ The table which allows groups to contain other groups. It also holds the inherit | group_id | The id of the group containing the subgroup | | subgroup_id | The id of the subgroup | -### `user_groups` table +### `group_users` table The table which assigns users to groups. @@ -228,13 +233,55 @@ The table which assigns users to groups. | group_id | The id of the group containing the user | | user_id | The id of the user | -### `groups`, `group_groups`, `user_groups` and inheritances +### `groups`, `group_groups`, `group_users` and inheritances We mentioned earlier that the groups currently holds the roles with the associated permissions. +The database stores the inheritances of rights as described below. + +Let's imagine that a user is granted the role of *Owner* for the "Org1" organisation, s/he therefore belongs to the group "Org1 Owners" (aka `id_org1_owner_grp`) which also belongs to the "WS1 Owners" (aka `id_ws1_owner_grp`) by default. In other words, this user is by default owner of boththe Org1 organization and of the WS1 workspace. + +The below schema illustrates both the inheritance of between the groups and the state of the database: + +![BDD state by default](./images/BDD-doc-inheritance-default.png) + +This inheritance by default can be changed through the Users management popup in the Contextual Menu for the Workspaces: + +![The drop-down list after "Inherit access:" in the workspaces Users Management popup](./images/ws-users-management-popup.png) +If you change the inherit access to "View Only", here is what happens: + +![BDD state after inherit access has changed, the `group_groups.group_id` value has changed](./images/BDD-doc-inheritance-after-change.png) + +The Org1 owners now belongs to the "WS1 Viewers" group, and the user despite being Owner of *Org1* can only view the workspace *WS1* and its documents because s/he only gets the Viewer role for this workspace. Regarding the database, `group_groups` which holds the group inheritance has been updated, so the parent group for `id_org1_owner_grp` is now `id_ws1_viewers_grp`. + +### `users` table + +Stores `users` information. + +| Column name | Description | +|--------------- | --------------- | +| id | The user's id | +| name | The user's name | +| api_key | If generated, the [HTTP API Key](https://support.getgrist.com/rest-api/) used to authenticate the user | +| picture | The user's picture (should be provided by the SSO Identity Provider) | +| first_login_at | The date of the first login | +| is_first_time_user | whether the user discovers Grist (used to trigger the Welcome Tour) | +| options | various global options related to the user, like the locale | +| connect_id | used by [GristConnect](https://github.com/gristlabs/grist-ee/blob/5ae19a7dfb436c8a3d67470b993076e51cf83f21/ext/app/server/lib/GristConnect.ts) in Enterprise Edition to identify user in external provider | +| ref | Used to identify a user in the automated tests | + +### `logins` table + > [!WARNING] -> +> At the contrary of the `users`, this table should store information related to the users authentication + +| Column name | Description | +|--------------- | --------------- | +| id | The login id | +| user_id | The user's id | +| email | The normalized email address used for equality and indexing | +| display_email | The user's email address should be displayed | ### The migrations diff --git a/documentation/develop.md b/documentation/develop.md index e95b5b01..4595b60c 100644 --- a/documentation/develop.md +++ b/documentation/develop.md @@ -130,6 +130,7 @@ Check out this repository: https://github.com/gristlabs/grist-widget#readme Some documentation to help you starting developing: - [Overview of Grist Components](./overview.md) + - [The database](./database.md) - [GrainJS & Grist Front-End Libraries](./grainjs.md) - [GrainJS Documentation](https://github.com/gristlabs/grainjs/) (The library used to build the DOM) - [The user support documentation](https://support.getgrist.com/) diff --git a/documentation/images/BDD-doc-inheritance-after-change.png b/documentation/images/BDD-doc-inheritance-after-change.png new file mode 100644 index 0000000000000000000000000000000000000000..1a02f86dbd425770f4a16bd47862c97c73c68d0f GIT binary patch literal 248123 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%0AB}dsa*DFrl+k&#D^w@Ly7 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 UNr%}!vcTU#12am6o-^%#08`RbKmY&$ literal 0 HcmV?d00001 diff --git a/documentation/images/ws-users-management-popup.png b/documentation/images/ws-users-management-popup.png new file mode 100644 index 0000000000000000000000000000000000000000..9b18aaa43bba1103fbcc549df1d929952c74d6d3 GIT binary patch literal 31918 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 literal 0 HcmV?d00001 From 635c166ad8709028cc603b743c3f2bb63faea5c8 Mon Sep 17 00:00:00 2001 From: fflorent Date: Mon, 29 Apr 2024 19:44:45 +0200 Subject: [PATCH 06/11] Typos and various little changes --- documentation/database.md | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/documentation/database.md b/documentation/database.md index 545dcd2c..16fb64cb 100644 --- a/documentation/database.md +++ b/documentation/database.md @@ -61,7 +61,7 @@ For more information, please consult [the documentation for migrations](./migrat The home database may either be a sqlite or a postgresql database depending on how the Grist instance has been installed. You may check the `TYPEORM_*` env variables in the [README](https://github.com/gristlabs/grist-core/blob/main/README.md). -Unless otherwise configured, the home database is a sqlite file. In docker, it is stored in `/persist/home.sqlite3`. +Unless otherwise configured, the home database is a sqlite file. In docker, it is stored at this location: `/persist/home.sqlite3`. The schema below is the same (except minor differences in the column types) whatever the database type is. @@ -72,18 +72,22 @@ The database schema is the following: ![Schema of the home database](./images/homedb-schema.svg) > [!NOTE] -> For simplicity's sake, we have removed tables related to the billing, nor to the migrations. +> For simplicity's sake, we have removed tables related to the billing and to the migrations. If you want to generate the above schema by yourself, you may run the following command using [SchemaCrawler](https://www.schemacrawler.com/) ([a docker image is available for a quick run](https://www.schemacrawler.com/docker-image.html)): ````bash # You may adapt the --database argument to fit with the actual file name # You may also remove the `--grep-tables` option and all that follows to get the full schema. -$ schemacrawler --server=sqlite --database=landing.db --info-level=standard --portable-names --command=schema --output-format=svg --output-file=/tmp/graph.svg --grep-tables="products|billing_accounts|limits|billing_account_managers|activations|migrations" --invert-match +$ schemacrawler --server=sqlite --database=landing.db --info-level=standard \ + --portable-names --command=schema --output-format=svg \ + --output-file=/tmp/graph.svg \ + --grep-tables="products|billing_accounts|limits|billing_account_managers|activations|migrations" \ + --invert-match ```` ### `orgs` table -Tables whose rows represent organisations (also called "Team sites"). +Stores organisations (also called "Team sites") information. | Column name | Description | | ------------- | -------------- | @@ -95,7 +99,7 @@ Tables whose rows represent organisations (also called "Team sites"). ### `workspaces` table -Tables whose rows represent workspaces +Stores workspaces information. | Column name | Description | | ------------- | -------------- | @@ -107,17 +111,17 @@ Tables whose rows represent workspaces ### `docs` table -Tables whose rows represent documents +Stores document information that is not portable, which means that it does not store the document data nor the ACL rules (see the "Document Database" section). | Column name | Description | | ------------- | -------------- | | id | The primary key | | name | The name as displayed in the UI | -| workspace_id | The workspace to which the document belongs | +| workspace_id | The workspace the document belongs to | | is_pinned | Whether the document has been pinned or not | | url_id | Short version of the `id`, as displayed in the URL | | removed_at | If not null, stores the date when the workspaces has been placed in the trash (it will be hard deleted after 30 days) | -| options | Serialized options as described in [DocumentOptions](https://github.com/gristlabs/grist-core/blob/4567fad94787c20f65db68e744c47d5f44b932e4/app/common/UserAPI.ts#L125-L135) | +| options | Serialized options as described in the [DocumentOptions](https://github.com/gristlabs/grist-core/blob/4567fad94787c20f65db68e744c47d5f44b932e4/app/common/UserAPI.ts#L125-L135) interface | | grace_period_start | Specific to getgrist.com (TODO describe it) | | usage | stats about the document (see [DocumentUsage](https://github.com/gristlabs/grist-core/blob/4567fad94787c20f65db68e744c47d5f44b932e4/app/common/DocUsage.ts)) | | trunk_id | If set, the current document is a fork (only from a tutorial), and this column references the original document | @@ -132,17 +136,17 @@ FIXME: What's the difference between `docs.url_id` and `alias.url_id`? | Column name | Description | | ------------- | -------------- | | url_id | The URL alias for the doc_id | -| org_id | The organisation to which the document belong to | +| org_id | The organisation the document belongs to | | doc_id | The document id | ### `acl_rules` table -Permissions for to access either a document, workspace or an organisation. +Permissions to access either a document, workspace or an organisation. | Column name | Description | | ------------- | -------------- | | id | The primary key | -| permissions | The permissions granted to the group. see below. | +| permissions | The permissions granted to the group. See below. | | type | Either equals to `ACLRuleOrg`, `ACLRuleWs` or `ACLRuleDoc` | | org_id | The org id associated to this ACL (if set, workspace_id and doc_id are null) | | workspace_id | The workspace id associated to this ACL (if set, doc_id and org_id are null) | @@ -266,7 +270,7 @@ Stores `users` information. | picture | The user's picture (should be provided by the SSO Identity Provider) | | first_login_at | The date of the first login | | is_first_time_user | whether the user discovers Grist (used to trigger the Welcome Tour) | -| options | various global options related to the user, like the locale | +| options | Serialized options as described in [UserOptions](https://github.com/gristlabs/grist-core/blob/513e13e6ab57c918c0e396b1d56686e45644ee1a/app/common/UserAPI.ts#L169-L179) interface | | connect_id | used by [GristConnect](https://github.com/gristlabs/grist-ee/blob/5ae19a7dfb436c8a3d67470b993076e51cf83f21/ext/app/server/lib/GristConnect.ts) in Enterprise Edition to identify user in external provider | | ref | Used to identify a user in the automated tests | From 77fc8f932cf380a8bd167071771330b89f3e4580 Mon Sep 17 00:00:00 2001 From: fflorent Date: Tue, 30 Apr 2024 13:15:00 +0200 Subject: [PATCH 07/11] Minor changes after self-review --- documentation/database.md | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/documentation/database.md b/documentation/database.md index 16fb64cb..260556a9 100644 --- a/documentation/database.md +++ b/documentation/database.md @@ -221,7 +221,7 @@ Each time a resource is created, the groups corresponding to the roles above are ### `group_groups` table -The table which allows groups to contain other groups. It also holds the inheritances (see below). +The table which allows groups to contain other groups. It is also used for the inheritance mechanism (see below). | Column name | Description | |--------------- | --------------- | @@ -243,20 +243,21 @@ We mentioned earlier that the groups currently holds the roles with the associat The database stores the inheritances of rights as described below. -Let's imagine that a user is granted the role of *Owner* for the "Org1" organisation, s/he therefore belongs to the group "Org1 Owners" (aka `id_org1_owner_grp`) which also belongs to the "WS1 Owners" (aka `id_ws1_owner_grp`) by default. In other words, this user is by default owner of boththe Org1 organization and of the WS1 workspace. +Let's imagine that a user is granted the role of *Owner* for the "Org1" organisation, s/he therefore belongs to the group "Org1 Owners" (aka `id_org1_owner_grp`) which also belongs to the "WS1 Owners" (aka `id_ws1_owner_grp`) by default. In other words, this user is by default owner of both the Org1 organization and of the WS1 workspace. The below schema illustrates both the inheritance of between the groups and the state of the database: ![BDD state by default](./images/BDD-doc-inheritance-default.png) -This inheritance by default can be changed through the Users management popup in the Contextual Menu for the Workspaces: +This inheritance can be changed through the Users management popup in the Contextual Menu for the Workspaces: ![The drop-down list after "Inherit access:" in the workspaces Users Management popup](./images/ws-users-management-popup.png) + If you change the inherit access to "View Only", here is what happens: ![BDD state after inherit access has changed, the `group_groups.group_id` value has changed](./images/BDD-doc-inheritance-after-change.png) -The Org1 owners now belongs to the "WS1 Viewers" group, and the user despite being Owner of *Org1* can only view the workspace *WS1* and its documents because s/he only gets the Viewer role for this workspace. Regarding the database, `group_groups` which holds the group inheritance has been updated, so the parent group for `id_org1_owner_grp` is now `id_ws1_viewers_grp`. +The Org1 owners now belongs to the "WS1 Viewers" group, and the user despite being *Owner* of "Org1" can only view the workspace WS1 and its documents because s/he only gets the Viewer role for this workspace. Regarding the database, `group_groups` which holds the group inheritance has been updated, so the parent group for `id_org1_owner_grp` is now `id_ws1_viewers_grp`. ### `users` table @@ -264,28 +265,30 @@ Stores `users` information. | Column name | Description | |--------------- | --------------- | -| id | The user's id | +| id | The primary key | | name | The user's name | | api_key | If generated, the [HTTP API Key](https://support.getgrist.com/rest-api/) used to authenticate the user | -| picture | The user's picture (should be provided by the SSO Identity Provider) | +| picture | The URL to the user's picture (must be provided by the SSO Identity Provider) | | first_login_at | The date of the first login | -| is_first_time_user | whether the user discovers Grist (used to trigger the Welcome Tour) | +| is_first_time_user | Whether the user discovers Grist (used to trigger the Welcome Tour) | | options | Serialized options as described in [UserOptions](https://github.com/gristlabs/grist-core/blob/513e13e6ab57c918c0e396b1d56686e45644ee1a/app/common/UserAPI.ts#L169-L179) interface | -| connect_id | used by [GristConnect](https://github.com/gristlabs/grist-ee/blob/5ae19a7dfb436c8a3d67470b993076e51cf83f21/ext/app/server/lib/GristConnect.ts) in Enterprise Edition to identify user in external provider | +| connect_id | Used by [GristConnect](https://github.com/gristlabs/grist-ee/blob/5ae19a7dfb436c8a3d67470b993076e51cf83f21/ext/app/server/lib/GristConnect.ts) in Enterprise Edition to identify user in external provider | | ref | Used to identify a user in the automated tests | ### `logins` table -> [!WARNING] -> At the contrary of the `users`, this table should store information related to the users authentication +Stores information related to the identification. + +> [!NOTE] +> A user may have many `logins` records associated to him/her, like several emails used for identification. | Column name | Description | |--------------- | --------------- | -| id | The login id | +| id | The primary key | | user_id | The user's id | -| email | The normalized email address used for equality and indexing | -| display_email | The user's email address should be displayed | +| email | The normalized email address used for equality and indexing (specifically converted to lower case) | +| display_email | The user's email address as displayed in the UI | ### The migrations From 4d2c0df3c2a9df39aef992d3e62c4fe0276facdd Mon Sep 17 00:00:00 2001 From: Florent Date: Fri, 3 May 2024 08:51:38 +0200 Subject: [PATCH 08/11] Apply Jordi's suggestions Co-authored-by: jordigh --- documentation/database.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/documentation/database.md b/documentation/database.md index 260556a9..ec968f25 100644 --- a/documentation/database.md +++ b/documentation/database.md @@ -5,16 +5,16 @@ > > Also contributions are welcome! :heart: -First of all, let's explicit two databases that Grist manages: +Grist manages two databases: 1. The Home Database; 2. The Document Database (aka the grist document); -The Home database is responsible for things related to the instance, like: - - the users and the groups registered on the instance; - - the billing; - - the organisations (aka sites), the workspaces; - - the documents metadata (id, name, workspace under which it is located...); - - the rights (ACL) to access to organisations, workspaces and documents (the access to the content of the document is controlled by the document itself); +The Home database is responsible for things related to the instance, such as: + - the users and the groups registered on the instance, + - the billing, + - the organisations (also called sites), the workspaces, + - the documents' metadata (such as ID, name, or workspace under which it is located); + - the access permissions (ACLs) to organisations, workspaces and documents (access to the content of the document is controlled by the document itself); A Grist Document is a Sqlite database which contains data like: - The tables, pages, views data; @@ -24,7 +24,7 @@ A Grist Document is a Sqlite database which contains data like: ### Inspecting the Document -A Grist Document (with the `.grist` extension) is actually a sqlite database. You may download a document like [this one](https://api.getgrist.com/o/templates/api/docs/keLK5sVeyfPkxyaXqijz2x/download?template=false&nohistory=false) and inspect its content using the `sqlite3` command: +A Grist Document (with the `.grist` extension) is actually a SQLite database. You may download a document like [this one](https://api.getgrist.com/o/templates/api/docs/keLK5sVeyfPkxyaXqijz2x/download?template=false&nohistory=false) and inspect its content using the `sqlite3` command: ```` $ sqlite3 Flashcards.grist @@ -48,22 +48,22 @@ _grist_REPL_Hist _gristsys_Files _grist_Shares _gristsys_PluginData ```` -:warning: Be sure to work on a copy of a document if you inspect its content, otherwise you may loose data. +:warning: If you want to ensure that you will not alter a document's contents, make a backup copy beforehand. ### The migrations -The migrations are handled in the python sandbox in this code: +The migrations are handled in the Python sandbox in this code: https://github.com/gristlabs/grist-core/blob/main/sandbox/grist/migrations.py For more information, please consult [the documentation for migrations](./migrations.md). ## The Home Database -The home database may either be a sqlite or a postgresql database depending on how the Grist instance has been installed. You may check the `TYPEORM_*` env variables in the [README](https://github.com/gristlabs/grist-core/blob/main/README.md). +The home database may either be a SQLite or a PostgreSQL database depending on how the Grist instance has been installed. For details, please refer to the `TYPEORM_*` env variables in the [README](https://github.com/gristlabs/grist-core/blob/main/README.md#database-variables). -Unless otherwise configured, the home database is a sqlite file. In docker, it is stored at this location: `/persist/home.sqlite3`. +Unless otherwise configured, the home database is a SQLite file. In the default Docker image, it is stored at this location: `/persist/home.sqlite3`. -The schema below is the same (except minor differences in the column types) whatever the database type is. +The schema below is the same (except for minor differences in the column types), regardless of what the database type is. ### The Schema From 9a4b2b5f39ac36ae519c8760b0287e05b5362092 Mon Sep 17 00:00:00 2001 From: Florent Date: Fri, 3 May 2024 09:48:22 +0200 Subject: [PATCH 09/11] Camille's suggestions --- documentation/database.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/documentation/database.md b/documentation/database.md index ec968f25..e59a5c0a 100644 --- a/documentation/database.md +++ b/documentation/database.md @@ -7,7 +7,7 @@ Grist manages two databases: 1. The Home Database; -2. The Document Database (aka the grist document); +2. The Document Database (also known as "the grist document"); The Home database is responsible for things related to the instance, such as: - the users and the groups registered on the instance, @@ -16,7 +16,7 @@ The Home database is responsible for things related to the instance, such as: - the documents' metadata (such as ID, name, or workspace under which it is located); - the access permissions (ACLs) to organisations, workspaces and documents (access to the content of the document is controlled by the document itself); -A Grist Document is a Sqlite database which contains data like: +A Grist Document contains data like: - The tables, pages, views data; - The ACL *inside* to access to all or part of tables (rows or columns); @@ -24,7 +24,7 @@ A Grist Document is a Sqlite database which contains data like: ### Inspecting the Document -A Grist Document (with the `.grist` extension) is actually a SQLite database. You may download a document like [this one](https://api.getgrist.com/o/templates/api/docs/keLK5sVeyfPkxyaXqijz2x/download?template=false&nohistory=false) and inspect its content using the `sqlite3` command: +A Grist Document (with the `.grist` extension) is actually a SQLite database. You may download a document like [this one](https://api.getgrist.com/o/templates/api/docs/keLK5sVeyfPkxyaXqijz2x/download?template=false&nohistory=false) and inspect its content using a tool such as the `sqlite3` command: ```` $ sqlite3 Flashcards.grist @@ -153,6 +153,7 @@ Permissions to access either a document, workspace or an organisation. | doc_id | The document id associated to this ACL (if set, workspace_id and org_id are null) | | group_id | The group of users for which the ACL applies | + The permissions are stored as an integer which is read in its binary form which allows to make bitwise operations: | Name | Value (binary) | Description | @@ -205,7 +206,7 @@ The groups are entities that may contain either other groups and/or users. | id | The primary key | | name | The name (see the 5 types of groups below) | -Only 5 types of groups exist, which corresponds actually to Roles (for the permission, please refer to the section detailing the `acl_rules` tables): +Only 5 types of groups exist, which corresponds actually to Roles (for the permissions, please refer to the [ACL rules permissions details](#acl-permissions)): - `owners` (see the `OWNERS` permissions) - `editors` (see the `EDITORS` permissions) - `viewers` (see the `VIEWS` permissions) @@ -243,7 +244,7 @@ We mentioned earlier that the groups currently holds the roles with the associat The database stores the inheritances of rights as described below. -Let's imagine that a user is granted the role of *Owner* for the "Org1" organisation, s/he therefore belongs to the group "Org1 Owners" (aka `id_org1_owner_grp`) which also belongs to the "WS1 Owners" (aka `id_ws1_owner_grp`) by default. In other words, this user is by default owner of both the Org1 organization and of the WS1 workspace. +Let's imagine that a user is granted the role of *Owner* for the "Org1" organisation, s/he therefore belongs to the group "Org1 Owners" (whose ID is `id_org1_owner_grp`) which also belongs to the "WS1 Owners" (whose ID is `id_ws1_owner_grp`) by default. In other words, this user is by default owner of both the Org1 organization and of the WS1 workspace. The below schema illustrates both the inheritance of between the groups and the state of the database: From 631b09a3fe80012bcf46a18c194fd0266085b0ec Mon Sep 17 00:00:00 2001 From: fflorent Date: Fri, 3 May 2024 10:04:06 +0200 Subject: [PATCH 10/11] Prefer svg to png format and add drawio file for future changes --- documentation/database.md | 4 +- .../BDD-doc-inheritance-after-change.png | Bin 248123 -> 0 bytes .../BDD-doc-inheritance-after-change.svg | 4 + .../images/BDD-doc-inheritance-default.png | Bin 240136 -> 0 bytes .../images/BDD-doc-inheritance-default.svg | 4 + documentation/images/BDD.drawio | 234 ++++++++++++++++++ 6 files changed, 244 insertions(+), 2 deletions(-) delete mode 100644 documentation/images/BDD-doc-inheritance-after-change.png create mode 100644 documentation/images/BDD-doc-inheritance-after-change.svg delete mode 100644 documentation/images/BDD-doc-inheritance-default.png create mode 100644 documentation/images/BDD-doc-inheritance-default.svg create mode 100644 documentation/images/BDD.drawio diff --git a/documentation/database.md b/documentation/database.md index e59a5c0a..d3631222 100644 --- a/documentation/database.md +++ b/documentation/database.md @@ -248,7 +248,7 @@ Let's imagine that a user is granted the role of *Owner* for the "Org1" organisa The below schema illustrates both the inheritance of between the groups and the state of the database: -![BDD state by default](./images/BDD-doc-inheritance-default.png) +![BDD state by default](./images/BDD-doc-inheritance-default.svg) This inheritance can be changed through the Users management popup in the Contextual Menu for the Workspaces: @@ -256,7 +256,7 @@ This inheritance can be changed through the Users management popup in the Contex If you change the inherit access to "View Only", here is what happens: -![BDD state after inherit access has changed, the `group_groups.group_id` value has changed](./images/BDD-doc-inheritance-after-change.png) +![BDD state after inherit access has changed, the `group_groups.group_id` value has changed](./images/BDD-doc-inheritance-after-change.svg) The Org1 owners now belongs to the "WS1 Viewers" group, and the user despite being *Owner* of "Org1" can only view the workspace WS1 and its documents because s/he only gets the Viewer role for this workspace. Regarding the database, `group_groups` which holds the group inheritance has been updated, so the parent group for `id_org1_owner_grp` is now `id_ws1_viewers_grp`. diff --git a/documentation/images/BDD-doc-inheritance-after-change.png b/documentation/images/BDD-doc-inheritance-after-change.png deleted file mode 100644 index 1a02f86dbd425770f4a16bd47862c97c73c68d0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 248123 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%0AB}dsa*DFrl+k&#D^w@Ly7 zR;*?&YM!9Hnp-nR_gD3$m#68hx-vCG#yQ~#_>pyz7%!3aDU{r1ArF4UcV^z#b2{Z>R-y^;J;WKsejZP9B?V<0<7Yh|873~L#W}ncK8N~% zCc*1llag&=PEbs^ePIy)=ww2kFJSQUYki^Zw{R2lvi`mu72Z{b&_L0-;dUE^M`>+) zk~A08drEDmBn1>*|9(#53!KCW1b$n7=iZFor1v4PVZc^2ua%~AobzdLT`4S0aQ&Z) zm2|l;oTS0sZ!7dnfR!ZuEdmymcnhRDd+99^Ypk@RC-+Qa>LsDKc5Bn^eS?kv_DbTt zE{w-SHO<~TvgNNOWTHM2gM`z5D*Fwe*o573Q5A#pzAZ`#gCCHWzl^{=JXrlD z6HU=Na7GV}Q2x6INtppwv1t|hC@A68;2RbA|^0HeVfSzV^mpZB3xXpKnNu*#0q?INtZko-$U#ft-KV zF7`Ob03h7!%2JQAkbaSmuDwUBDq;d~@YF7;Cc;tAhECVwHx}XiAwBp7>FE6s95p#5 z;=i+yr0~9a1f?zQb}zf>Gx8)R5?Yq}!ld{2NO_+jmB7?}sXs}Ez`j9PX=9J9Ye{}D zDZkS&A#N7m(m zUN@)I;&p_&|MnO@MV|%B@L}=!{TKiC?*H-;iOD0qU_=DlVq>lk$oZDJ@!m;lg9-A z1LME_gv2^&H|n;}$B?nqB@}_e6y1qZC(enveTH%n?r{%W-wCt^gL3A;gXjOu#W@b= z2T*b3yfj|M)>Qg@wu*F0xN7)f2voU0Jsp+Q2TQ%*gb4<+xd8UCiH)Lv&!g&;!B=Xy zf0sZQ;xNR@(~`m;ya!1`O%XwHMCxt>L}#Mz{{sKi0zrO5P*kG(<6TxnN_e$%5elXt z;?T1lX(9G=z3qq^ZTZh>awV4r0J`nIIqoOmF+XlFsq9C+ijPLkC2% z93%)WI&KTt_vGr9{s3oAh$d_aK+gamNppe0r_V3AEqz_s1fDmB9~9BVw#O;Tp)Lxd z@?#_Jdbq!N;bjb;iS`GDs5ywClz=D*e|yN_{V?r+m)BVs{Z7tCC*%*~eqW$I(qlyX zA~G);KuP-gQ&R0 zjp{?!MfTzyE3%&MDD4V>A}%ZX<*5sg5uyuB-TAT_sR2raV9RqG&(LH@O zP!laYq#B7GmRB$A%RVTj%)JsAek$qoBSn5A;c%~Rd|N|J6a<|!F7FMmI*5ZPz=8?0 z@2_2|<-WB=P&c+?)SKs!Pw=q^e{V4U04c>lWa>OywYQ?kn%AW-LyZP(s*xypOduYl zS`)Yneu6xbEy`}_5X5=<6JK7O@yM;g?Mf3zV6`MhF^i+bs}ZpLEcNyAAO`CC4D$$JHWL@kpyf z$~LmhJ$Jlt@pZRcXS=hr0oApX52xNfC-54CulN|ST~)BF(b8nO?gzugAH68cc=8wg zor<%UTym!m!MWnU5K>~%$Ga)a#h8Bjzr#2*7>6;w6!*xkGn1=gKLd@^!tA0*^>g^2 zMwStX5IMd;Zv-h~6hqm`Vl^pmaksh^u%dd{GToi4e--{pXnEh0@1!kqM#L#^H3=-j zGWWwFP|ltM$JY_69n7hZ`}dGJ^p7k?8L6PjH!qubB~ksLQo+pLuLLm|^NJ?QDEig| zu&r~|v+A0lr5O|T+r~qa-b>^8Ik6l+GHWT!@1L$B6`bcMUY}9nUY%-nBpNBI+XHna zYuau_@@3FO_W~ZJ&#r>EBhzWOujvw2T_ttDLv+5s*j8()7$?zUh1gK@k<+^V!^4$$ z#m-%_HIBIwcG|S3%i~fOlhQm`TsO3#vUzK?>j_tXby^U-tV(c{LC&9n$FNn)iA)MT`VhVZ~f)Tjf$RMN;_$;3l*CvVK6^K@pexZ%L&%O94r>pHgPOO6^Jaa z%+0cuKB?RWwSf_f!taCC)qJfYW7Gs75qwB4vj+lj4`DZz8)k5BH3sAw?l8?T?^KM< zzIpraI6_0u|88gy5u5xw$w}tnC`x6N3DFLSX|s`eHx4+xhYC zJjlw~yAIe7#(ttrPa#Q5;57~aueM^pU;F77+!Hri-Q^iJY0m|n``0*g;)*PX@pIuL zt`zA>JRt!O5W`l^()@U*#$F+DeZ^wFOhcQ3(-A@ zfSQBBy5+8Qb-tqC(P_I5oxgzfDB?8+t}AAAvb9 z25bz$-&aXT0XoWfZLEv@!9WRGVK~NT_j?gZU=Wo58v#qu2ZOz{E)p{QgLN>^;lYaz zk0OsAlz|61Z29j0c`yrxz|h$0ID*IMFT#V%d3?!7gcabiFnBOn!=xE`kWm>Pw8rNX z`SV~9e9_Rt?ZqkN!T)Jtk6_xr%cLGKoNP;06@mni=DaVgSiI5%_Ba8D& zGFnpBYl_W|CHWhmwv)(+KQMZMFtW&0(IHdS!jBuDtV{9Xh!B|ogwG=`^%&V`p;x^@ zyS^8EZ{Es~b9)r38uLIq_8tDC3%*wtaN4aY$j?YcU{rqg`CNoi0cJbU`eaZuDFZ1k zo|}fu7r&FZc%**k0lSPVHG08OeueaB&5e^9Ng*(z3F^&9Yx^tA%jx*r(`4{6d_44- z--w-z{)>q^K~Oy@JoR_TU@8gmp}^s{2h2Ori6yO?Ba`s|xe0H^7=pl7l{+&W<$xIGGct1uAd3R3it~X^`VpRON%jOvr z3ewED*KkUB?#eqc_cHm&*LtwY#A+&jHA!6xuJt#^!#{G<{ZL>4@X5_h5&^no=rs~epGK>>;`~)GqI)3{>>pCbJ zE;cK@eeHXQU|(^&*$}O}UBrVPmC#mz`q3@y;WMjg|E}d4$xD23IT-YrOd5 z7L+=r18_b6h>AnQ?&1??toqyQmXARlQ^B9{;N6qTd;}-yO%ZuGHzU;&X{>Trjx=2K zA!!84R*&#eFN4nz{XK?{wcVbJ7!74OA)_F=50qENo4h=v(bVV1*Y!VH#30F0IjzJ) zPauWpnG8e=vpf$ETJT4}E$i7>nP{?vlphwA$}?;;UnrIv-1a&b&9CTEl7Qj3|0d=p z;L4kqz;Lv2N_xU(4@dSjdWq1<0P!Cj83#E)Pu0rb6+6L?Dt@evEfZe&{B1sD1YF5D zfqo8RfoMOCZSWuB9EBsE?f`W$0J`ZE>v5h3+t*#zOcB2j(M_#9IW3FHOhPo{W$5cE z7ODJK5DgIb<*8WP;BpqdFwIKPTUExStt{WI%KiFOjT5n!4<8)|Ye(=3ho|;tA>lq) zaMI;w?;nKCv4S0MubE**rU81>YN~CO`8dk^&r?2IjQZn8|J;CjgV>4$^Mq27J=Beg z9G$!eH?aph>$Bz3)*t=ni&XY2His2;9h+?{*)It6*5~I8seJ`A1fO%EE^19xBe~W~-7qmF$1aejd zz-jS^B{PBzn-LTyvvJ(lm4kLj-*bPW`dcpODn}PB_+1Kq>e>ck#-JyeJU~$eQJv@- zR8J z5|aLeg)}D}yw04B3G*p1dS45qEc!J(KyTa5+}HQFzWL1EPq2iM9jFXC1xFMc98vg> z&y*cQNI@`{EYiHV{$|eY#fv&vb*&zI^t*#aSc}{j_|x)0NRIWY8v-k>7vm^$&BtG9 z8k7Nu9W=J+5wr6xO%rBC^(}&=phL8svg>$MTMNnNrr}MQ6X~M9D;(A%5cZi3uItze z|Mm-_SQ9%dh?10duC(LIFbD5f#h+<&y8(Ap$%T!RqeB-V`ERv0Gm=_)G0j7KZ1n9k z1wf>c+8|PBG(FO2Q_3W#HmOP}J(yqvvS&QN|k$}_YyhI8y9HNUbB8|cZXOV|PuR`-`>pufJ@{-slf+g3d6*ZFXlvw|9>fu^$A#&!#R+4F51=X1^{Xn8#H7XfHh394x5cUo-g{==#v=BR zI_G!PcLl=s(b4pq@VGC6r5M;cZZQyEi6*%jbDdZQN5w5st^*0yz->RY(v=JFKLE}O z*%5H&0YBSU#lFo0{`6(doiz#oag?|y7Di*`;?NO?z_^ zUVR3R4yxlE?Xu$VRS!1n+xL+LWpH^1Y`Am)4i7~bFY9w}2_s}dX?4_EJ!qcjjS=~Q ze+whqk3NZPU3PfYv&XbMuyvUz03B=thuS=mem~sW4_pLi7;1_4fZJo(@a*2gFhdrD zi8{<9!+ZE3F8|4)#sF|!I4lMczv8_c@ zr&(r4J$(jEQv%>le-hRR@$;zZWIDWNWAVt(ESzxOJj|!uhi@^;ct!im#YB9Spf7-* z1!S2S3S61AnNzy>3-=QCk|pXm1R)5b;8iz^PwoTb6b{|2aq}a_owT{f*>FP|5WC3H z$|ZnVqQn)t4F@meaul)~8V!=FLN~q6zOXU|FD-%Uy44Y5B?do?454#GmJkE<^x=&T zg#(zX)z&xE#NYww-{>wvdP;xOE1HM}9~QuIfc?H-6=pY=yLFxvUlet@58A7iu-(m0 zv;(?22Mi0MM1gR)zP5Q{uHSVxh%)@5k=kwmN5>}@04@L67>645N4V*uHhT#;nnM6QZFU^km+VLWVWXwtEwD&)ATi=$BJAY3vlqEB1ismU1-5l)LKSYk;szc!TED*4B z*e&|cx$Aa^3t*|?3~Pi85|gpI5XW`MjPL%`|CqydYxJewne(faYJ?xq-i5&Nj zz5&IgXt!BW(?KPXR! zA!VTBA$2)ZJ@d7mO#`#lDGFu%uk3sKs<~Vw>{Txj+vGh+=Jzeodcjl;s9aS}Jhj8D zx8k0afIO`bB%P^Mmtu|{pzTlptxl7g(-rr~ z#No0Ag0OWSxK2cAS^(Mq2@)gkgA1T*@8=|qPH?W_KRO6+(a-SI3gXMiz$Q{7lHM=O zfL!U8WbQBZ&@o*cb_`FZg9a!6!a zm|{`(dyvAEb1Leb)#tCi9H22}AoyYcvUPHu6V8_=E~}?_C4e7V;Y&1c?E(3e zBU6dCG~$?s83hP*EBeUinXBvr{~Pvsz4NY0G0+Mp$>{vjxWwa@q}{-9Sz5!$p>u6ITv#*a@Z-`(mpJy0;7DC=&S@`|>0_}F4_`&Fcilzuz!d}+a1udAdUnvo~ z39X`=y5%sXdi*XqMejdw@%+!;7O-3y%j{Yh78K9!tz=5#`;eFq(G zr2X?jgerR<1GAW%#(KkY2`1utmYiZT{C+)3US3v<966Z zhP5Y47WF3}T4+l`$Y;`Gx4ToU5-+-3nfGFak%w4nfUl@RibP3ByR9h~Zg!P^>>$3T zNp-!dhFa%Feij88<%c9+uK9>)FHK3oxc>K3QY0FU9EtOEE3Zo)cd?K9xBB{NKH39+ zxBtaCt7*yoE;><~M%CPBezKUCD~Tx`FxyK+L2>0jSlr8gq_*lCdvYpzlGd|yaojI- ziORN5X79GnW&cWdMihXE!A<%ZMlr$CcOoN=$9Wi%-AjN9@Cn!;LSmo39UQ_HG%Gpo z)5J}h?fm4j?5IbU{%*dbX#r0ADEGE!UK>LkyCvb{puNTF@4jMuyE43>gX7(2f|!7v zjHjOKnuao%Xqjv1D$N^Z)S36zL^!sSYy?dgKFVP@%;E?N4zfqg-}zA&!QG(~G}%dG z6jAvHNXA{D>f7W1k@nZ*GOx}<0x0*K-sa>Fid>VAkdk4QD8Ft6Nm#SZIk(Dn!gkZ|_8CLppIYQi41eg0g7pRRS7G8LoIG^BoP%3PGP}HGp z8}H83UA|LZycH4!}Wam$NZSdm3` zdvo=?i?=fbZ*p75=g7?|Zk_ftFLf_o@)X@zX;u-*enGK!6eg&lC$%Tb9h(?;?-5(C zeRWP4L*7e%IsP*@rK9gy2>=wLOa5#MRz%Y7+*7Zqi;sb5Bp;*Lv__IAEH5^~`b>|F zyNYp+6&n17qq0vP#GTdr4oYy7S$P-lM)y}wOrke76F%QGSahq6vIZ=P<84FgSGJ^9 z&3QrZLz~0C>oD4xJ2ARNxu@NHrI{vUi)@+LyZd0`M}Xwpim_kBU7J^mDAr5Q-#a(0 z_2X)=F_nxjn_U7n1P3aDvF04%S$15a%}GO=@-`>m?<$K$4@*U+SDH)W^Ll;znkdAx z4R8C1*n%(2cEdZJgwD5$L+y3J6OM5`hOaA)n^2I+w~M9#z6!_ds?ZcVx>KAvZ*^mY zrr_}A6OI{M!Sp?<)GElzjp`Hioi{H(Q3LtPXmMp-@FgVZxp0XbiJXX>nLk9F5Yr<> zOHM|8K=m{><%DiioYUaWx9Z|x$ep#%_7O>3SCR&!6G}iT=9_X`XPXH;9#*{>?rY%j zB>Hz;gvk@cBVX#r*MEBg^-MQ$gM9g;%nO-+hANttSg*(_|E$_f8lw94m@nsZFL9WXPG_xt_ToGP_c{ z8CS`fzv=D}{g2{!a+}LguIP$_oox3`{q0M~3B13MOKcHzU$f(s0>|N`x3%+ocrm`^ zMIpoqiIdpZp(!;SAD35&#wh#GjQeV)y39wZwA{&coiNk9k*^0FE~-`uZ_;by7@}P6lm)_+Ck-SH*c;oC9{d%zCEj9!zixz zQDCo?x5ncuLmNE|i5VVYg4{a+jpv5kb&Z2zbexQ0D=d$^;0=|8Y`+HYCS7)<1WoyENzE$Yh zD2q@WIqD7sk56xRT)3RJv@uS)J>DO=r0l=A7vRL4a~H2XJV0`hsxp_riNqy!bI(NJ z>;kgn^2Bg`P8Tx%^@1fZd?${G1o^D=~! zxb>FF$D>&IF}jvGIA{FirElKbC_GPIf<&Gm399;~JlS8r6ez!=@Kga4pt6FEd{-W^Q6{hwxj5+FfX)XBcEdsC0qYNn8ahT-7_j?0%ZxxDi56Eu&~phIP0 z>_w_S%seB1z)eFb@MOZ_zj(FYMTgq`e zal27jKfG;oVR^vn+DATiSoCekqGwTd-DZSEPop)%bsQG`)$|S)m|+*Z7(X-Sln&H} zZ+qIBL zNEzfcBD#!viRPQQ8}f41RVhyMv@4e6k-=G*sRNexG%~~lNfPfJ=KGN=q--aBuS$F& zO9xH`j|9PYq)RHmUcV~I7~d$1R{!CDpd?ee(bBqYT^!b%!-?I4-qs((MMoo^;!XN5 zx~HB|O-tnv{`7C9lAi(M*g*C{#8(nMKR2@}jH_yq0BWj{Ll@QK`eArUd_L3He5iEs z!@O_L`mo?KamC?ShIangcgQC5uBMRKqKp^hntX|4D=4n}vG@jX0yU$`nXtAA2vbOW zqto_2wra$n7s-cr#-ciHCq&5-NY_0B-H7%dt+SUGPE7pT42b?E#?K^<$3_br6*&8Z z2}jO8EQ46!vk0%iFnhg{>H(|pfMRK*)OFb2f3q+_d!~9wk)3==2wzO=&8)U@n&!q% zctDQ&E!Ta$!)}?%;6#$^{4TJAef(huD|IL3ejt0m%_p7&Tmv1mIWIL#=}!U?6_*nH zjD9~Y4&7bktm%H0apOtZK_nGR!l0S&P}B2V@kZTTRadH9k1o-wy4quOtp5NtvCQPP z}{j5cM7R@^X}p-Lz@j|B}&NqO~66<634V*EY*mu49t( zlr|~qxgFMwe-ID%7(yd45YoF5Bb?VwuTovO$)UyuOrK;}>IJaM1q5#g3+o?wl+=Do zSNkfq_(@Hf0DVGHvhu5+%tljqvBS?#RP))khvJt}M&7(v;E5}+LcOmZyKtEm45}cm zjq7_@VED$TgdmyNC(O&|Q*b~><%aUB%>F!$(p8LkNCkSoUq!s4ezu9iT8M zU*lA#!Sx_6PhgF<4HdupB4Jk%TWy5pk&_^rVH&p|j}348b$(L`ZWb}B-P*k#!f7qP zVwVz2;ASIFGW<7}ae!b0^|uRZ7st=q0HTSX+5u#eKSL)`X*QY-0q;ekZj?FIdw!x89QoGJr86y2VaJ2)jh$)9i+od_&)0!wlkHhW_fFkcQZu zu6Ah`lJmd|bZ9bO?WE#`B^^o|v;f=Yck{g^$?9J&InR7dvw*@14&Vm)C}VQ93TsaZ zP16fQIBdT5+!M}7T2s~&1S?mgZQHV?sSdYWJwg4Hrvv~_2SPSUyK#@+%Hx)HBY4#q z`d_EH2`Lq~D61)|fOSFm8y+QSVK#CBVgoYmdO32@Sd2!S^d2OrX4y=vu*&N}z`0=o z;xEfJEFFP&N~bbLjMtOz+m>c|7_YdBEXTAp9%zf=t7jhHO`(@|+t`>;{yn}hh;XoP zlZru%H4~Wn+x|~o{L3Ir-W=~dNn5u9)I=Uculv7v z35QIsx^fp$+_eVQgx)SqeM>s`wXofofCXBpJ|Le(2aJ~kq&W}34H?AYep=-T!XtCw zB0W9yfZVn@xT@8tfXNhlwT@6y4BHSqtO6|F{7UmYWJJ#Q>VhzQPBwBA)V@d01WDeC zbDoS@FoDa~9}zk(|5tB*au;w8FcgoFs6M2`_9H2wNOBTfqd@tWZUcEUpsuNBOx!o@ zH1_J~t`#IvvidXvfofS0n1iGlAOxxgTr1bNE$4KAOZFv58n17_CIs;z(a5kr{Jn=F z+s6@YB{iRKuqGZM1W>L6Uj-YTtzd^(q{BYsvLdOovpyZ>vkee9H4)!iI?74yu5fh} z24OK?;xx#k-JEaa$SwMliKXx{r6$gc4Jx38IjTd;X*{$K-m=mklAKPL9*XbX3ybe55Ggz5>qUAoBZ& zGiI3WOWc*nh+7EWKp!xj=8#(dl!Okeud)11nGt1~1CBCL+G{Qy?bdkFp)>p%M6S;J zCr)3S!^|L=aPO?j%(QNs?CrWWPXr08HU9IF5oIgwFavk=D25AGk<3Jp4qf5G!iBM! z$$*Vs$Jy@h2=!a1v-=Ca@7(jQApV?Q^3)0nLe4llf2FN?lGByd(@k5><@$m zFdyC?)qL%@$#=`&alON}mfyks6p~{NS0H=H6L3X&ZgTr=(d)ddL_p`!tavk$gHe&E zUWS1I)e7H?Cj8t2w{06%p|z3`jKj)%#jHW70-&7bBxA4!d!+=HE)N5C-PPHxq5y*U zAbG+X4s6~mH7;y|^4I_;qDeqog6%oi)tMy5mtQ~C7@=~f7eg*F>{ej1L}tlL0?vn) zctEWZ>)}}tCKV<-+!_lRKs&FJ@20DV5Clp-V-7ARrN`x3EYTbnjW)S!&u(y&u@bmN zDD-fiMq#mJ>me(dxY-Y;j`$~B_tMixfH4gSl}1U zg;59;SgCcDslF3P=Rq;x+^}M_dnx!vwR-X~cITF2!ilNUc2V+Wms{ihn#&pl%RY}GS34gvetNY`;;0()+sqL2SBe}Q5uDhUCut3KBF@4Ms}0z~ z+tka%nNcPCkSkLJNx-~U?R*nCj5G|iBsF6ysLt~66a|Px5aY)~&f*2IGXA^cmn-2? zfekyBISVN>Leuh2w?%O3{FJ)~T<_GYFHFK^$|-*HKGbP_zSl6so|CD7N^}WqWuN%L z@@du=%)ujImZYQN-)KXk2Z?61=Dp#b@wQPYl2GPL&ZDG{cPnvw=i-{qUO|K(%`O;f z4z=Q)?0mT;W*Yx{mVBgXy3w$VbvLeRVK_iwi{AOGtfjmiJ258L4+(n=Vqa6s7X6b9 zWV~{gOHHe7vLF+1wLDyT=~<|X{t5jygV4E5ERk!UdZ4h!WE`D`F}OLkHz4`^?%J#P zFd*=m-gZuTO^yQdJzpFBo$qJb;da?^vIL%jPDmQ?3GkAthnBRZ^-ZCx_C zDp|EUG@Y3^mKL8NNt&LnnpF!jxXm=LxFr9L9Xk+(b-ab!P?RVj3D-dNM7#x1I5M(&_L(^mB5lLrCe4yK%>_bYsK( zus~!1l3r7FOhZ}qUAw66%ySXQ`J{)C@1S58kRSSnHP=RcGN)6fWjnUf)QCRlhqDqqySf`T(80dpuyv1)e`fGWi|rD zqM6SyGcu1eV<#@Jg;##m^Pjw@g5GFRkeIrIQN(H3-Go3)E}w=w&$I~`(z4xB=`eIc ze+2iFRI!nF{N|I?v`pBdgg%mo-Mt53Z=|2`3?*=4*N2i9N!?G!*)(1@V~rpPA|JUd z(*I<+2`u`ES-<#VlwG`&KiAdG4fEakz=T%dKNv1Mk4fYOpjX zQ+&AQ;;1UB?W2~1CzBVsF=%@65j(b6=36Uz^;;^ef5&rNz0UsgXcvXE$)7q*n}UZE z*D7D<7_FY%`sG=fa}zTa$hi(+FOl(mm(e^=q^u+l*-A5$t1bG9bVX+aeo}?8%jgf1 z#7au^eo$j~#=akUzrtD)m96vkI$kP95+NM*tZS$i0%Zg7cNky4WG+piSavD>5&atF zWnU%2qJ5^VDVX{U6lWTp`4NAuIJr&Gz5Vh%rLntm7mmCt7UXmemq7=c-%ZLgBIDvo z5PLr1yT*ZC*GeC^A}^sqIXyJ++u@8A_w-}jKRuIM`X0dd@B zfYWTboPlyfLjlzlkKPXy%i0gZ>h#?2w!bF!b)PM77bc>QDAn#R2BU6V9MiBEA%jNu z76fisvI^4_{k+8Ltxt9cmaf$OCm8y=%a6^U&!uiNZ5WFRoRvytM74$_I8VI{*@=r~ zy-8x@@~9~NgJWVrZMsMLp-}!!9ZhtSi2}n0D#yS|jtm6U6){!a78olS`Z#g!K0ztq~}T_F2zoT@r? z>1H;2rrfx>%%Jc={qxt#nAvoO`OA@M;?DZf{i*{(yz(+U0U4Tg^zxY5V_FZN9(ge_ z$a#GEvT%j;i|QV#G7d71Fvi@s5bLs*N1H1~ig7T9N8!vJC5&}3O-6ikj|kDf>r{p* zM$J^rL8&B7f_smBy!soi3s+FHu8HQEwlfN7xPuzKreXArXw$px7dPV^`WyBK26h*m zA50`h_pTGf(2?ctPwd41>iifH*m*}Mpj!y8g3SZMwwpKNc(9kJ$ciogoR!>Y#N)nr znNf;_yYaN@+q!EVf^&KaA*HdF`U+({dJZmvC&md?Z=mNs)Gz}>#JSFCs_0L>%fGo6 z&B&@qWJ41x(oeAT>3X0J%;+?x}!JMQp@! zfgZ!w!F^)*9<`w%fF!ryE5w0&Hcez|uYn@=H@@J=1lklmcl_T(cBwxMcIj)Q$P)FHOEoyvxHC#Jg5&fCJwfhPsej@SwjjPp57|VdI_LRvG^mB`AAT zAo5weUP+8~xXC3!8AB4^g6%db*hVh?Nl7((*)e2pRQ)5c@TL|IZ3Pf3x~Eu=+nl!;W^zkK{k7%rks?Tmu?}K zPuU8NoD9^e^7%}?9&U@GEEKP?I!C5&LDD7$o+TmP%2UNN=7(h>j5|rHeleAtMIj1A z6HFP!CU*?9hu5LxMfnweaYhsmr}la`O5FEX69=O;*OM?w_J}~<_D1}aJlPAj*X*WM zS+P{7GBzUBH8#z@-rOaMl2FN<=^tUqt!QBo8xNJz?L7m9bUOl-CFqL?u=H+g+gVG_ zGJ*{xS;wGyvOOj)TI5>M@n+k)LgSZyt%VQM#a4hu2ot!94IEsq8n; zDNR+vzuXs1e&6^mWp}oZri%D}Q8w@g?y2Uu>J2v|C}LAH%SqjvAL&k%%C_rib8=_1 zWoeD5_vJ}pqU(evd9yia4Ygzz2^$#3jP>->M_yJO`eN^C3xiK_-&^d6K0!P^Zya*? za=S_CrgX#v)yPE<2a+F$MsTHS5(yFg;bD;5 z8$cBJZ9xRU;knfRy1KgsT+ecyf95k4AidqrwMzlRzkHx&&HV2R{HTDq%4)vw>nm^c zCClO7e@>Cn2}kff_?LzF37mT!M3IQafah7Vls>%=nUjCBjE + + +
Org1
Workspace1
Some user
group_users
group_id
user_id
id_org1_owner_grp
id_some_user
Org1 Owners
Ws1 Owners
NEW
Ws1 Viewers

group_groups
group_id
subgroup_id
id_ws1_owner_grp
id_ws1_viewers_grp
id_org1_owner_grp
\ No newline at end of file diff --git a/documentation/images/BDD-doc-inheritance-default.png b/documentation/images/BDD-doc-inheritance-default.png deleted file mode 100644 index b766b778766c943b25dfbce0bdaf6954643849ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240136 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 UNr%}!vcTU#12am6o-^%#08`RbKmY&$ diff --git a/documentation/images/BDD-doc-inheritance-default.svg b/documentation/images/BDD-doc-inheritance-default.svg new file mode 100644 index 00000000..1fc21857 --- /dev/null +++ b/documentation/images/BDD-doc-inheritance-default.svg @@ -0,0 +1,4 @@ + + + +
Org1
Org1
Workspace1
Workspace1
Some user
Some...
group_users
group_id
group_id
user_id
user_id
id_org1_owner_grp
id_org1_owner_grp
id_some_user
id_some_user
group_groups
group_id
group_id
subgroup_id
subgroup_id
id_ws1_owner_grp
id_ws1_owner_grp
id_org1_owner_grp
id_org1_owner_grp
Org1 Owners
Org1 Own...
Ws1 Owners
Ws1 Owne...
\ No newline at end of file diff --git a/documentation/images/BDD.drawio b/documentation/images/BDD.drawio new file mode 100644 index 00000000..7e7fe9aa --- /dev/null +++ b/documentation/images/BDD.drawio @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 99a44fe45565b093077a0b9dfaa2426599b414cc Mon Sep 17 00:00:00 2001 From: Florent Date: Fri, 3 May 2024 13:08:19 +0200 Subject: [PATCH 11/11] Minor change --- documentation/database.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/database.md b/documentation/database.md index d3631222..fb8fecc6 100644 --- a/documentation/database.md +++ b/documentation/database.md @@ -16,7 +16,7 @@ The Home database is responsible for things related to the instance, such as: - the documents' metadata (such as ID, name, or workspace under which it is located); - the access permissions (ACLs) to organisations, workspaces and documents (access to the content of the document is controlled by the document itself); -A Grist Document contains data like: +A Grist Document contains data such as: - The tables, pages, views data; - The ACL *inside* to access to all or part of tables (rows or columns);