Start documenting the databases

pull/937/head
fflorent 1 month ago
parent 0c95821475
commit a7c0b31ea1

@ -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).

@ -0,0 +1,609 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 9.0.0 (20230911.1827)
-->
<!-- Title: SchemaCrawler_Diagram Pages: 1 -->
<svg width="1587pt" height="914pt"
viewBox="0.00 0.00 1587.00 914.26" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 910.26)">
<title>SchemaCrawler_Diagram</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-910.26 1583,-910.26 1583,4 -4,4"/>
<text text-anchor="start" x="1304" y="-31.7" font-family="Helvetica,sans-Serif" font-size="14.00">generated by</text>
<text text-anchor="start" x="1400.88" y="-31.7" font-family="Helvetica,sans-Serif" font-size="14.00">SchemaCrawler 16.21.2</text>
<text text-anchor="start" x="1304" y="-10.7" font-family="Helvetica,sans-Serif" font-size="14.00">generated on</text>
<text text-anchor="start" x="1401" y="-10.7" font-family="Helvetica,sans-Serif" font-size="14.00">2024&#45;04&#45;15 14:21:22</text>
<polygon fill="none" stroke="#888888" points="1301,-4 1301,-48 1571,-48 1571,-4 1301,-4"/>
<!-- acl_rules_53bd8961 -->
<g id="node1" class="node">
<title>acl_rules_53bd8961</title>
<polygon fill="#f2e6c2" stroke="none" points="1319,-731.08 1319,-752.08 1424,-752.08 1424,-731.08 1319,-731.08"/>
<text text-anchor="start" x="1321" y="-737.78" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">acl_rules</text>
<polygon fill="#f2e6c2" stroke="none" points="1424,-731.08 1424,-752.08 1570,-752.08 1570,-731.08 1424,-731.08"/>
<text text-anchor="start" x="1523" y="-736.78" font-family="Helvetica,sans-Serif" font-size="14.00">[table]</text>
<text text-anchor="start" x="1321" y="-716.78" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">id</text>
<text text-anchor="start" x="1417.75" y="-715.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1426" y="-715.78" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER NOT NULL</text>
<text text-anchor="start" x="1417.75" y="-694.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1426" y="-694.78" font-family="Helvetica,sans-Serif" font-size="14.00">auto&#45;incremented</text>
<text text-anchor="start" x="1321" y="-673.78" font-family="Helvetica,sans-Serif" font-size="14.00">permissions</text>
<text text-anchor="start" x="1417.75" y="-673.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1426" y="-673.78" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER NOT NULL</text>
<text text-anchor="start" x="1321" y="-652.78" font-family="Helvetica,sans-Serif" font-size="14.00">type</text>
<text text-anchor="start" x="1417.75" y="-652.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1425.75" y="-652.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<text text-anchor="start" x="1320.62" y="-631.78" font-family="Helvetica,sans-Serif" font-size="14.00">workspace_id</text>
<text text-anchor="start" x="1417.75" y="-631.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1426" y="-631.78" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER</text>
<text text-anchor="start" x="1321" y="-610.78" font-family="Helvetica,sans-Serif" font-size="14.00">org_id</text>
<text text-anchor="start" x="1417.75" y="-610.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1426" y="-610.78" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER</text>
<text text-anchor="start" x="1321" y="-589.78" font-family="Helvetica,sans-Serif" font-size="14.00">doc_id</text>
<text text-anchor="start" x="1417.75" y="-589.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1426" y="-589.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR</text>
<text text-anchor="start" x="1321" y="-568.78" font-family="Helvetica,sans-Serif" font-size="14.00">group_id</text>
<text text-anchor="start" x="1417.75" y="-568.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1426" y="-568.78" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER</text>
<polygon fill="none" stroke="#888888" points="1318,-562.08 1318,-753.08 1571,-753.08 1571,-562.08 1318,-562.08"/>
</g>
<!-- docs_2f969a -->
<g id="node3" class="node">
<title>docs_2f969a</title>
<polygon fill="#f2e6c2" stroke="none" points="976,-535.08 976,-556.08 1117,-556.08 1117,-535.08 976,-535.08"/>
<text text-anchor="start" x="978" y="-541.78" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">docs</text>
<polygon fill="#f2e6c2" stroke="none" points="1117,-535.08 1117,-556.08 1265,-556.08 1265,-535.08 1117,-535.08"/>
<text text-anchor="start" x="1218" y="-540.78" font-family="Helvetica,sans-Serif" font-size="14.00">[table]</text>
<text text-anchor="start" x="978" y="-520.78" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">id</text>
<text text-anchor="start" x="1110.75" y="-519.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1119" y="-519.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<text text-anchor="start" x="978" y="-498.78" font-family="Helvetica,sans-Serif" font-size="14.00">name</text>
<text text-anchor="start" x="1110.75" y="-498.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1119" y="-498.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<text text-anchor="start" x="978" y="-477.78" font-family="Helvetica,sans-Serif" font-size="14.00">created_at</text>
<text text-anchor="start" x="1110.75" y="-477.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1118.62" y="-477.78" font-family="Helvetica,sans-Serif" font-size="14.00">DATETIME NOT NULL</text>
<text text-anchor="start" x="978" y="-456.78" font-family="Helvetica,sans-Serif" font-size="14.00">updated_at</text>
<text text-anchor="start" x="1110.75" y="-456.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1118.62" y="-456.78" font-family="Helvetica,sans-Serif" font-size="14.00">DATETIME NOT NULL</text>
<text text-anchor="start" x="978" y="-435.78" font-family="Helvetica,sans-Serif" font-size="14.00">workspace_id</text>
<text text-anchor="start" x="1110.75" y="-435.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1119" y="-435.78" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER</text>
<text text-anchor="start" x="978" y="-414.78" font-family="Helvetica,sans-Serif" font-size="14.00">is_pinned</text>
<text text-anchor="start" x="1110.75" y="-414.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1119" y="-414.78" font-family="Helvetica,sans-Serif" font-size="14.00">BOOLEAN NOT NULL</text>
<text text-anchor="start" x="978" y="-393.78" font-family="Helvetica,sans-Serif" font-size="14.00">url_id</text>
<text text-anchor="start" x="1110.75" y="-393.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1119" y="-393.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR</text>
<text text-anchor="start" x="978" y="-372.78" font-family="Helvetica,sans-Serif" font-size="14.00">removed_at</text>
<text text-anchor="start" x="1110.75" y="-372.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1119" y="-372.78" font-family="Helvetica,sans-Serif" font-size="14.00">DATETIME</text>
<text text-anchor="start" x="978" y="-351.78" font-family="Helvetica,sans-Serif" font-size="14.00">options</text>
<text text-anchor="start" x="1110.75" y="-351.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1119" y="-351.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR</text>
<text text-anchor="start" x="978" y="-330.78" font-family="Helvetica,sans-Serif" font-size="14.00">grace_period_start</text>
<text text-anchor="start" x="1110.75" y="-330.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1119" y="-330.78" font-family="Helvetica,sans-Serif" font-size="14.00">DATETIME</text>
<text text-anchor="start" x="978" y="-309.78" font-family="Helvetica,sans-Serif" font-size="14.00">usage</text>
<text text-anchor="start" x="1110.75" y="-309.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1119" y="-309.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR</text>
<text text-anchor="start" x="978" y="-288.78" font-family="Helvetica,sans-Serif" font-size="14.00">created_by</text>
<text text-anchor="start" x="1110.75" y="-288.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1119" y="-288.78" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER</text>
<text text-anchor="start" x="978" y="-267.78" font-family="Helvetica,sans-Serif" font-size="14.00">trunk_id</text>
<text text-anchor="start" x="1110.75" y="-267.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1119" y="-267.78" font-family="Helvetica,sans-Serif" font-size="14.00">TEXT</text>
<text text-anchor="start" x="978" y="-246.78" font-family="Helvetica,sans-Serif" font-size="14.00">type</text>
<text text-anchor="start" x="1110.75" y="-246.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1119" y="-246.78" font-family="Helvetica,sans-Serif" font-size="14.00">TEXT</text>
<polygon fill="none" stroke="#888888" points="975,-240.08 975,-557.08 1266,-557.08 1266,-240.08 975,-240.08"/>
</g>
<!-- acl_rules_53bd8961&#45;&gt;docs_2f969a -->
<g id="edge2" class="edge">
<title>acl_rules_53bd8961:w&#45;&gt;docs_2f969a:e</title>
<path fill="none" stroke="black" d="M1300.15,-586C1288.9,-569.65 1294.6,-534.89 1276.05,-526.46"/>
<polygon fill="black" stroke="black" points="1308.24,-590 1315.21,-598.47 1313.02,-592.37 1316.9,-594.29 1316.9,-594.29 1316.9,-594.29 1313.02,-592.37 1319.2,-590.4 1308.24,-590"/>
<ellipse fill="none" stroke="black" cx="1303.11" cy="-587.47" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="1266.52,-529.68 1268.44,-519.87 1270.41,-520.25 1268.48,-530.07 1266.52,-529.68"/>
<polyline fill="none" stroke="black" points="1266.5,-524.58 1271.41,-525.55"/>
<polygon fill="black" stroke="black" points="1271.43,-530.64 1273.35,-520.83 1275.31,-521.22 1273.39,-531.03 1271.43,-530.64"/>
<polyline fill="none" stroke="black" points="1271.41,-525.55 1276.31,-526.51"/>
</g>
<!-- groups_b63e4e33 -->
<g id="node8" class="node">
<title>groups_b63e4e33</title>
<polygon fill="#f2e6c2" stroke="none" points="1018.5,-191.58 1018.5,-212.58 1076.5,-212.58 1076.5,-191.58 1018.5,-191.58"/>
<text text-anchor="start" x="1020.5" y="-198.28" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">groups</text>
<polygon fill="#f2e6c2" stroke="none" points="1076.5,-191.58 1076.5,-212.58 1222.5,-212.58 1222.5,-191.58 1076.5,-191.58"/>
<text text-anchor="start" x="1175.5" y="-197.28" font-family="Helvetica,sans-Serif" font-size="14.00">[table]</text>
<text text-anchor="start" x="1020.5" y="-177.28" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">id</text>
<text text-anchor="start" x="1066.5" y="-176.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1078.5" y="-176.28" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER NOT NULL</text>
<text text-anchor="start" x="1066.5" y="-155.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1078.5" y="-155.28" font-family="Helvetica,sans-Serif" font-size="14.00">auto&#45;incremented</text>
<text text-anchor="start" x="1020.5" y="-134.28" font-family="Helvetica,sans-Serif" font-size="14.00">name</text>
<text text-anchor="start" x="1066.5" y="-134.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1078.25" y="-134.28" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<polygon fill="none" stroke="#888888" points="1017.5,-127.58 1017.5,-213.58 1223.5,-213.58 1223.5,-127.58 1017.5,-127.58"/>
</g>
<!-- acl_rules_53bd8961&#45;&gt;groups_b63e4e33 -->
<g id="edge6" class="edge">
<title>acl_rules_53bd8961:w&#45;&gt;groups_b63e4e33:e</title>
<path fill="none" stroke="black" d="M1299.63,-566.93C1251.73,-524.31 1306.41,-289.28 1274,-226.58 1261.87,-203.11 1255.27,-186.14 1233.44,-182.37"/>
<polygon fill="black" stroke="black" points="1307.81,-569.98 1315.62,-577.68 1312.81,-571.84 1316.87,-573.35 1316.87,-573.35 1316.87,-573.35 1312.81,-571.84 1318.76,-569.25 1307.81,-569.98"/>
<ellipse fill="none" stroke="black" cx="1302.46" cy="-567.98" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="1224.1,-186.65 1224.89,-176.68 1226.89,-176.84 1226.1,-186.81 1224.1,-186.65"/>
<polyline fill="none" stroke="black" points="1223.5,-181.58 1228.48,-181.98"/>
<polygon fill="black" stroke="black" points="1229.09,-187.04 1229.88,-177.07 1231.87,-177.23 1231.08,-187.2 1229.09,-187.04"/>
<polyline fill="none" stroke="black" points="1228.48,-181.98 1233.47,-182.37"/>
</g>
<!-- orgs_34a26e -->
<g id="node10" class="node">
<title>orgs_34a26e</title>
<polygon fill="#f2e6c2" stroke="none" points="341,-681.58 341,-702.58 476,-702.58 476,-681.58 341,-681.58"/>
<text text-anchor="start" x="343" y="-688.28" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">orgs</text>
<polygon fill="#f2e6c2" stroke="none" points="476,-681.58 476,-702.58 624,-702.58 624,-681.58 476,-681.58"/>
<text text-anchor="start" x="577" y="-687.28" font-family="Helvetica,sans-Serif" font-size="14.00">[table]</text>
<text text-anchor="start" x="343" y="-667.28" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">id</text>
<text text-anchor="start" x="469.75" y="-666.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="478" y="-666.28" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER NOT NULL</text>
<text text-anchor="start" x="469.75" y="-645.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="478" y="-645.28" font-family="Helvetica,sans-Serif" font-size="14.00">auto&#45;incremented</text>
<text text-anchor="start" x="343" y="-624.28" font-family="Helvetica,sans-Serif" font-size="14.00">name</text>
<text text-anchor="start" x="469.75" y="-624.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="478" y="-624.28" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<text text-anchor="start" x="343" y="-603.28" font-family="Helvetica,sans-Serif" font-size="14.00">domain</text>
<text text-anchor="start" x="469.75" y="-603.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="478" y="-603.28" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR</text>
<text text-anchor="start" x="343" y="-582.28" font-family="Helvetica,sans-Serif" font-size="14.00">created_at</text>
<text text-anchor="start" x="469.75" y="-582.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="477.62" y="-582.28" font-family="Helvetica,sans-Serif" font-size="14.00">DATETIME NOT NULL</text>
<text text-anchor="start" x="343" y="-561.28" font-family="Helvetica,sans-Serif" font-size="14.00">updated_at</text>
<text text-anchor="start" x="469.75" y="-561.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="477.62" y="-561.28" font-family="Helvetica,sans-Serif" font-size="14.00">DATETIME NOT NULL</text>
<text text-anchor="start" x="343" y="-540.28" font-family="Helvetica,sans-Serif" font-size="14.00">owner_id</text>
<text text-anchor="start" x="469.75" y="-540.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="478" y="-540.28" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER</text>
<text text-anchor="start" x="343" y="-519.28" font-family="Helvetica,sans-Serif" font-size="14.00">billing_account_id</text>
<text text-anchor="start" x="469.75" y="-519.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="478" y="-519.28" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER</text>
<text text-anchor="start" x="343" y="-498.28" font-family="Helvetica,sans-Serif" font-size="14.00">host</text>
<text text-anchor="start" x="469.75" y="-498.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="478" y="-498.28" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR</text>
<polygon fill="none" stroke="#888888" points="340,-491.58 340,-703.58 625,-703.58 625,-491.58 340,-491.58"/>
</g>
<!-- acl_rules_53bd8961&#45;&gt;orgs_34a26e -->
<g id="edge11" class="edge">
<title>acl_rules_53bd8961:w&#45;&gt;orgs_34a26e:e</title>
<path fill="none" stroke="black" d="M1298.17,-615.35C1142.54,-611.87 795.65,-571.59 669,-626.58 647.07,-636.11 651.25,-662.5 635.2,-669.73"/>
<polygon fill="black" stroke="black" points="1307.17,-615.46 1317.11,-620.08 1312.5,-615.52 1316.83,-615.58 1316.83,-615.58 1316.83,-615.58 1312.5,-615.52 1317.22,-611.08 1307.17,-615.46"/>
<ellipse fill="none" stroke="black" cx="1301.45" cy="-615.39" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="627.42,-676.31 625.54,-666.49 627.51,-666.11 629.39,-675.93 627.42,-676.31"/>
<polyline fill="none" stroke="black" points="625.5,-671.58 630.41,-670.65"/>
<polygon fill="black" stroke="black" points="632.33,-675.37 630.45,-665.55 632.42,-665.17 634.3,-674.99 632.33,-675.37"/>
<polyline fill="none" stroke="black" points="630.41,-670.65 635.32,-669.71"/>
</g>
<!-- workspaces_e61add -->
<g id="node13" class="node">
<title>workspaces_e61add</title>
<polygon fill="#f2e6c2" stroke="none" points="678,-787.58 678,-808.58 774,-808.58 774,-787.58 678,-787.58"/>
<text text-anchor="start" x="679.88" y="-794.28" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">workspaces</text>
<polygon fill="#f2e6c2" stroke="none" points="774,-787.58 774,-808.58 922,-808.58 922,-787.58 774,-787.58"/>
<text text-anchor="start" x="875" y="-793.28" font-family="Helvetica,sans-Serif" font-size="14.00">[table]</text>
<text text-anchor="start" x="680" y="-773.28" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">id</text>
<text text-anchor="start" x="766" y="-772.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="776" y="-772.28" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER NOT NULL</text>
<text text-anchor="start" x="766" y="-751.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="776" y="-751.28" font-family="Helvetica,sans-Serif" font-size="14.00">auto&#45;incremented</text>
<text text-anchor="start" x="680" y="-730.28" font-family="Helvetica,sans-Serif" font-size="14.00">name</text>
<text text-anchor="start" x="766" y="-730.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="776" y="-730.28" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<text text-anchor="start" x="680" y="-709.28" font-family="Helvetica,sans-Serif" font-size="14.00">created_at</text>
<text text-anchor="start" x="766" y="-709.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="775.62" y="-709.28" font-family="Helvetica,sans-Serif" font-size="14.00">DATETIME NOT NULL</text>
<text text-anchor="start" x="680" y="-688.28" font-family="Helvetica,sans-Serif" font-size="14.00">updated_at</text>
<text text-anchor="start" x="766" y="-688.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="775.62" y="-688.28" font-family="Helvetica,sans-Serif" font-size="14.00">DATETIME NOT NULL</text>
<text text-anchor="start" x="680" y="-667.28" font-family="Helvetica,sans-Serif" font-size="14.00">org_id</text>
<text text-anchor="start" x="766" y="-667.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="776" y="-667.28" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER</text>
<text text-anchor="start" x="680" y="-646.28" font-family="Helvetica,sans-Serif" font-size="14.00">removed_at</text>
<text text-anchor="start" x="766" y="-646.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="776" y="-646.28" font-family="Helvetica,sans-Serif" font-size="14.00">DATETIME</text>
<polygon fill="none" stroke="#888888" points="677,-639.58 677,-809.58 923,-809.58 923,-639.58 677,-639.58"/>
</g>
<!-- acl_rules_53bd8961&#45;&gt;workspaces_e61add -->
<g id="edge21" class="edge">
<title>acl_rules_53bd8961:w&#45;&gt;workspaces_e61add:e</title>
<path fill="none" stroke="black" d="M1298.2,-637.11C1132.65,-646.28 1103.61,-772.76 932.84,-777.45"/>
<polygon fill="black" stroke="black" points="1307.17,-636.86 1317.29,-641.09 1312.5,-636.72 1316.83,-636.6 1316.83,-636.6 1316.83,-636.6 1312.5,-636.72 1317.04,-632.09 1307.17,-636.86"/>
<ellipse fill="none" stroke="black" cx="1301.45" cy="-637.02" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="924.07,-782.57 923.93,-772.57 925.93,-772.54 926.07,-782.54 924.07,-782.57"/>
<polyline fill="none" stroke="black" points="923,-777.58 928,-777.52"/>
<polygon fill="black" stroke="black" points="929.07,-782.5 928.93,-772.5 930.93,-772.48 931.07,-782.47 929.07,-782.5"/>
<polyline fill="none" stroke="black" points="928,-777.52 933,-777.45"/>
</g>
<!-- aliases_c97dc35d -->
<g id="node2" class="node">
<title>aliases_c97dc35d</title>
<polygon fill="#f2e6c2" stroke="none" points="1328.5,-869.08 1328.5,-890.08 1412.5,-890.08 1412.5,-869.08 1328.5,-869.08"/>
<text text-anchor="start" x="1330.5" y="-875.78" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">aliases</text>
<polygon fill="#f2e6c2" stroke="none" points="1412.5,-869.08 1412.5,-890.08 1560.5,-890.08 1560.5,-869.08 1412.5,-869.08"/>
<text text-anchor="start" x="1513.5" y="-874.78" font-family="Helvetica,sans-Serif" font-size="14.00">[table]</text>
<text text-anchor="start" x="1330.5" y="-854.78" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">url_id</text>
<text text-anchor="start" x="1406.25" y="-853.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1414.5" y="-853.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<text text-anchor="start" x="1330.5" y="-833.78" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">org_id</text>
<text text-anchor="start" x="1406.25" y="-832.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1414.5" y="-832.78" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER NOT NULL</text>
<text text-anchor="start" x="1330.5" y="-811.78" font-family="Helvetica,sans-Serif" font-size="14.00">doc_id</text>
<text text-anchor="start" x="1406.25" y="-811.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1414.5" y="-811.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR</text>
<text text-anchor="start" x="1330.5" y="-790.78" font-family="Helvetica,sans-Serif" font-size="14.00">created_at</text>
<text text-anchor="start" x="1406.25" y="-790.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1414.12" y="-790.78" font-family="Helvetica,sans-Serif" font-size="14.00">DATETIME NOT NULL</text>
<polygon fill="none" stroke="#888888" points="1327.5,-784.08 1327.5,-891.08 1561.5,-891.08 1561.5,-784.08 1327.5,-784.08"/>
</g>
<!-- aliases_c97dc35d&#45;&gt;docs_2f969a -->
<g id="edge3" class="edge">
<title>aliases_c97dc35d:w&#45;&gt;docs_2f969a:e</title>
<path fill="none" stroke="black" d="M1310.57,-807.2C1277.15,-760.25 1319.85,-552.09 1276.08,-527.05"/>
<polygon fill="black" stroke="black" points="1318.46,-811.57 1325.03,-820.36 1323.13,-814.16 1326.91,-816.26 1326.91,-816.26 1326.91,-816.26 1323.13,-814.16 1329.39,-812.49 1318.46,-811.57"/>
<ellipse fill="none" stroke="black" cx="1313.46" cy="-808.8" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="1266.22,-529.68 1268.71,-519.99 1270.65,-520.49 1268.16,-530.17 1266.22,-529.68"/>
<polyline fill="none" stroke="black" points="1266.5,-524.58 1271.34,-525.83"/>
<polygon fill="black" stroke="black" points="1271.06,-530.92 1273.56,-521.24 1275.49,-521.74 1273,-531.42 1271.06,-530.92"/>
<polyline fill="none" stroke="black" points="1271.34,-525.83 1276.18,-527.08"/>
</g>
<!-- aliases_c97dc35d&#45;&gt;orgs_34a26e -->
<g id="edge12" class="edge">
<title>aliases_c97dc35d:w&#45;&gt;orgs_34a26e:e</title>
<path fill="none" stroke="black" d="M1308.43,-837.82C1028.83,-844.61 895.79,-997.34 669,-822.58 616.6,-782.2 687.11,-682.83 635.33,-672.46"/>
<polygon fill="black" stroke="black" points="1317.17,-837.71 1327.22,-842.09 1322.5,-837.64 1326.83,-837.59 1326.83,-837.59 1326.83,-837.59 1322.5,-837.64 1327.11,-833.09 1317.17,-837.71"/>
<ellipse fill="none" stroke="black" cx="1311.45" cy="-837.78" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="626.05,-676.65 626.94,-666.69 628.93,-666.87 628.04,-676.83 626.05,-676.65"/>
<polyline fill="none" stroke="black" points="625.5,-671.58 630.48,-672.03"/>
<polygon fill="black" stroke="black" points="631.03,-677.1 631.92,-667.14 633.91,-667.32 633.02,-677.28 631.03,-677.1"/>
<polyline fill="none" stroke="black" points="630.48,-672.03 635.46,-672.47"/>
</g>
<!-- docs_2f969a&#45;&gt;docs_2f969a -->
<g id="edge1" class="edge">
<title>docs_2f969a:w&#45;&gt;docs_2f969a:e</title>
<path fill="none" stroke="black" d="M961.45,-285.94C896.25,-362.58 909.45,-579.08 1120.5,-579.08 1337.27,-579.08 1345.31,-567.96 1274.08,-529.19"/>
<polygon fill="black" stroke="black" points="968.01,-279.7 978.36,-276.08 971.88,-276.03 975.02,-273.04 975.02,-273.04 975.02,-273.04 971.88,-276.03 972.16,-269.55 968.01,-279.7"/>
<ellipse fill="none" stroke="black" cx="963.87" cy="-283.65" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="1264.02,-529.46 1268.75,-520.65 1270.51,-521.6 1265.78,-530.41 1264.02,-529.46"/>
<polyline fill="none" stroke="black" points="1265.5,-524.58 1269.91,-526.95"/>
<polygon fill="black" stroke="black" points="1268.42,-531.83 1273.15,-523.02 1274.91,-523.96 1270.18,-532.77 1268.42,-531.83"/>
<polyline fill="none" stroke="black" points="1269.91,-526.95 1274.31,-529.31"/>
</g>
<!-- docs_2f969a&#45;&gt;workspaces_e61add -->
<g id="edge22" class="edge">
<title>docs_2f969a:w&#45;&gt;workspaces_e61add:e</title>
<path fill="none" stroke="black" d="M957.27,-449.25C918.44,-499.22 983.9,-749.14 932.68,-775.36"/>
<polygon fill="black" stroke="black" points="965.27,-445.23 976.22,-444.75 970.03,-442.83 973.9,-440.88 973.9,-440.88 973.9,-440.88 970.03,-442.83 972.18,-436.71 965.27,-445.23"/>
<ellipse fill="none" stroke="black" cx="960.16" cy="-447.8" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="925.1,-782.23 922.85,-772.49 924.8,-772.04 927.04,-781.78 925.1,-782.23"/>
<polyline fill="none" stroke="black" points="923,-777.58 927.87,-776.46"/>
<polygon fill="black" stroke="black" points="929.97,-781.11 927.73,-771.37 929.68,-770.92 931.92,-780.66 929.97,-781.11"/>
<polyline fill="none" stroke="black" points="927.87,-776.46 932.75,-775.34"/>
</g>
<!-- users_6a70267 -->
<g id="node14" class="node">
<title>users_6a70267</title>
<polygon fill="#f2e6c2" stroke="none" points="9,-293.08 9,-314.08 141,-314.08 141,-293.08 9,-293.08"/>
<text text-anchor="start" x="11" y="-299.78" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">users</text>
<polygon fill="#f2e6c2" stroke="none" points="141,-293.08 141,-314.08 287,-314.08 287,-293.08 141,-293.08"/>
<text text-anchor="start" x="240" y="-298.78" font-family="Helvetica,sans-Serif" font-size="14.00">[table]</text>
<text text-anchor="start" x="11" y="-278.78" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">id</text>
<text text-anchor="start" x="134.75" y="-277.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="143" y="-277.78" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER NOT NULL</text>
<text text-anchor="start" x="134.75" y="-256.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="143" y="-256.78" font-family="Helvetica,sans-Serif" font-size="14.00">auto&#45;incremented</text>
<text text-anchor="start" x="11" y="-235.78" font-family="Helvetica,sans-Serif" font-size="14.00">name</text>
<text text-anchor="start" x="134.75" y="-235.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="142.75" y="-235.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<text text-anchor="start" x="11" y="-214.78" font-family="Helvetica,sans-Serif" font-size="14.00">api_key</text>
<text text-anchor="start" x="134.75" y="-214.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="143" y="-214.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR</text>
<text text-anchor="start" x="11" y="-193.78" font-family="Helvetica,sans-Serif" font-size="14.00">picture</text>
<text text-anchor="start" x="134.75" y="-193.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="143" y="-193.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR</text>
<text text-anchor="start" x="11" y="-172.78" font-family="Helvetica,sans-Serif" font-size="14.00">first_login_at</text>
<text text-anchor="start" x="134.75" y="-172.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="143" y="-172.78" font-family="Helvetica,sans-Serif" font-size="14.00">DATETIME</text>
<text text-anchor="start" x="10.62" y="-151.78" font-family="Helvetica,sans-Serif" font-size="14.00">is_first_time_user</text>
<text text-anchor="start" x="134.75" y="-151.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="143" y="-151.78" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER NOT NULL</text>
<text text-anchor="start" x="11" y="-130.78" font-family="Helvetica,sans-Serif" font-size="14.00">options</text>
<text text-anchor="start" x="134.75" y="-130.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="143" y="-130.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR</text>
<text text-anchor="start" x="11" y="-109.78" font-family="Helvetica,sans-Serif" font-size="14.00">connect_id</text>
<text text-anchor="start" x="134.75" y="-109.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="143" y="-109.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR</text>
<text text-anchor="start" x="11" y="-88.78" font-family="Helvetica,sans-Serif" font-size="14.00">&quot;ref&quot;</text>
<text text-anchor="start" x="134.75" y="-88.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="142.75" y="-88.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<polygon fill="none" stroke="#888888" points="8,-82.08 8,-315.08 288,-315.08 288,-82.08 8,-82.08"/>
</g>
<!-- docs_2f969a&#45;&gt;users_6a70267 -->
<g id="edge16" class="edge">
<title>docs_2f969a:w&#45;&gt;users_6a70267:e</title>
<path fill="none" stroke="black" d="M955.27,-293.33C817.2,-289.57 779.98,-245.61 633,-232.58 499.74,-220.78 453.9,-177.48 332,-232.58 308.61,-243.16 314.96,-272.99 297.75,-280.73"/>
<polygon fill="black" stroke="black" points="964.17,-293.45 974.11,-298.08 969.5,-293.52 973.83,-293.58 973.83,-293.58 973.83,-293.58 969.5,-293.52 974.23,-289.08 964.17,-293.45"/>
<ellipse fill="none" stroke="black" cx="958.45" cy="-293.37" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="289.92,-287.31 288.05,-277.49 290.01,-277.11 291.88,-286.94 289.92,-287.31"/>
<polyline fill="none" stroke="black" points="288,-282.58 292.91,-281.65"/>
<polygon fill="black" stroke="black" points="294.83,-286.38 292.96,-276.55 294.93,-276.18 296.79,-286 294.83,-286.38"/>
<polyline fill="none" stroke="black" points="292.91,-281.65 297.82,-280.72"/>
</g>
<!-- secrets_756efc22 -->
<g id="node4" class="node">
<title>secrets_756efc22</title>
<polygon fill="#f2e6c2" stroke="none" points="1340,-513.58 1340,-534.58 1403,-534.58 1403,-513.58 1340,-513.58"/>
<text text-anchor="start" x="1342" y="-520.28" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">secrets</text>
<polygon fill="#f2e6c2" stroke="none" points="1403,-513.58 1403,-534.58 1549,-534.58 1549,-513.58 1403,-513.58"/>
<text text-anchor="start" x="1502" y="-519.28" font-family="Helvetica,sans-Serif" font-size="14.00">[table]</text>
<text text-anchor="start" x="1342" y="-499.28" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">id</text>
<text text-anchor="start" x="1396.75" y="-498.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1404.75" y="-498.28" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<text text-anchor="start" x="1342" y="-477.28" font-family="Helvetica,sans-Serif" font-size="14.00">&quot;value&quot;</text>
<text text-anchor="start" x="1396.75" y="-477.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1404.75" y="-477.28" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<text text-anchor="start" x="1342" y="-456.28" font-family="Helvetica,sans-Serif" font-size="14.00">doc_id</text>
<text text-anchor="start" x="1396.75" y="-456.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1404.75" y="-456.28" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<polygon fill="none" stroke="#888888" points="1339,-449.58 1339,-535.58 1550,-535.58 1550,-449.58 1339,-449.58"/>
</g>
<!-- secrets_756efc22&#45;&gt;docs_2f969a -->
<g id="edge4" class="edge">
<title>secrets_756efc22:w&#45;&gt;docs_2f969a:e</title>
<path fill="none" stroke="black" d="M1319.93,-466.26C1301.02,-480.27 1301.16,-515.89 1276.38,-523.24"/>
<polygon fill="black" stroke="black" points="1328.62,-463.61 1339.5,-464.99 1333.72,-462.05 1337.86,-460.78 1337.86,-460.78 1337.86,-460.78 1333.72,-462.05 1336.86,-456.38 1328.62,-463.61"/>
<ellipse fill="none" stroke="black" cx="1323.15" cy="-465.28" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="1268.16,-529.4 1266.82,-519.49 1268.8,-519.23 1270.15,-529.13 1268.16,-529.4"/>
<polyline fill="none" stroke="black" points="1266.5,-524.58 1271.45,-523.91"/>
<polygon fill="black" stroke="black" points="1273.12,-528.73 1271.77,-518.82 1273.75,-518.55 1275.1,-528.46 1273.12,-528.73"/>
<polyline fill="none" stroke="black" points="1271.45,-523.91 1276.41,-523.24"/>
</g>
<!-- shares_ca2520d3 -->
<g id="node5" class="node">
<title>shares_ca2520d3</title>
<polygon fill="#f2e6c2" stroke="none" points="1340,-401.08 1340,-422.08 1403,-422.08 1403,-401.08 1340,-401.08"/>
<text text-anchor="start" x="1342" y="-407.78" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">shares</text>
<polygon fill="#f2e6c2" stroke="none" points="1403,-401.08 1403,-422.08 1549,-422.08 1549,-401.08 1403,-401.08"/>
<text text-anchor="start" x="1502" y="-406.78" font-family="Helvetica,sans-Serif" font-size="14.00">[table]</text>
<text text-anchor="start" x="1342" y="-386.78" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">id</text>
<text text-anchor="start" x="1396.75" y="-385.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1405" y="-385.78" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER NOT NULL</text>
<text text-anchor="start" x="1396.75" y="-364.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1405" y="-364.78" font-family="Helvetica,sans-Serif" font-size="14.00">auto&#45;incremented</text>
<text text-anchor="start" x="1342" y="-343.78" font-family="Helvetica,sans-Serif" font-size="14.00">key</text>
<text text-anchor="start" x="1396.75" y="-343.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1404.75" y="-343.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<text text-anchor="start" x="1342" y="-322.78" font-family="Helvetica,sans-Serif" font-size="14.00">doc_id</text>
<text text-anchor="start" x="1396.75" y="-322.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1404.75" y="-322.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<text text-anchor="start" x="1342" y="-301.78" font-family="Helvetica,sans-Serif" font-size="14.00">link_id</text>
<text text-anchor="start" x="1396.75" y="-301.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1404.75" y="-301.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<text text-anchor="start" x="1342" y="-280.78" font-family="Helvetica,sans-Serif" font-size="14.00">options</text>
<text text-anchor="start" x="1396.75" y="-280.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1404.75" y="-280.78" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<polygon fill="none" stroke="#888888" points="1339,-274.08 1339,-423.08 1550,-423.08 1550,-274.08 1339,-274.08"/>
</g>
<!-- shares_ca2520d3&#45;&gt;docs_2f969a -->
<g id="edge5" class="edge">
<title>shares_ca2520d3:w&#45;&gt;docs_2f969a:e</title>
<path fill="none" stroke="black" d="M1319.52,-331.34C1264.99,-357.46 1344.98,-511.2 1276.17,-523.77"/>
<polygon fill="black" stroke="black" points="1328.36,-329.59 1339.05,-332.06 1333.6,-328.56 1337.84,-327.71 1337.84,-327.71 1337.84,-327.71 1333.6,-328.56 1337.3,-323.23 1328.36,-329.59"/>
<ellipse fill="none" stroke="black" cx="1322.75" cy="-330.7" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="1267.92,-529.48 1267.08,-519.52 1269.07,-519.35 1269.91,-529.31 1267.92,-529.48"/>
<polyline fill="none" stroke="black" points="1266.5,-524.58 1271.48,-524.16"/>
<polygon fill="black" stroke="black" points="1272.9,-529.06 1272.06,-519.1 1274.05,-518.93 1274.89,-528.89 1272.9,-529.06"/>
<polyline fill="none" stroke="black" points="1271.48,-524.16 1276.46,-523.74"/>
</g>
<!-- group_groups_dfa1d7f3 -->
<g id="node6" class="node">
<title>group_groups_dfa1d7f3</title>
<polygon fill="#f2e6c2" stroke="none" points="1319.5,-215.08 1319.5,-236.08 1429.5,-236.08 1429.5,-215.08 1319.5,-215.08"/>
<text text-anchor="start" x="1321.25" y="-221.78" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">group_groups</text>
<polygon fill="#f2e6c2" stroke="none" points="1429.5,-215.08 1429.5,-236.08 1569.5,-236.08 1569.5,-215.08 1429.5,-215.08"/>
<text text-anchor="start" x="1522.5" y="-220.78" font-family="Helvetica,sans-Serif" font-size="14.00">[table]</text>
<text text-anchor="start" x="1321.5" y="-200.78" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">group_id</text>
<text text-anchor="start" x="1421.5" y="-199.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1431.25" y="-199.78" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER NOT NULL</text>
<text text-anchor="start" x="1321.5" y="-179.78" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">subgroup_id</text>
<text text-anchor="start" x="1421.5" y="-178.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1431.25" y="-178.78" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER NOT NULL</text>
<polygon fill="none" stroke="#888888" points="1318.5,-172.08 1318.5,-237.08 1570.5,-237.08 1570.5,-172.08 1318.5,-172.08"/>
</g>
<!-- group_groups_dfa1d7f3&#45;&gt;groups_b63e4e33 -->
<g id="edge7" class="edge">
<title>group_groups_dfa1d7f3:w&#45;&gt;groups_b63e4e33:e</title>
<path fill="none" stroke="black" d="M1299.26,-202.86C1274.06,-198.03 1262.08,-184.59 1233.43,-182.01"/>
<polygon fill="black" stroke="black" points="1308.21,-203.66 1317.76,-209.04 1313.52,-204.14 1317.83,-204.52 1317.83,-204.52 1317.83,-204.52 1313.52,-204.14 1318.57,-200.07 1308.21,-203.66"/>
<ellipse fill="none" stroke="black" cx="1302.51" cy="-203.15" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="1224.28,-186.62 1224.72,-176.63 1226.71,-176.72 1226.28,-186.71 1224.28,-186.62"/>
<polyline fill="none" stroke="black" points="1223.5,-181.58 1228.5,-181.8"/>
<polygon fill="black" stroke="black" points="1229.28,-186.84 1229.71,-176.85 1231.71,-176.94 1231.28,-186.93 1229.28,-186.84"/>
<polyline fill="none" stroke="black" points="1228.5,-181.8 1233.49,-182.02"/>
</g>
<!-- group_groups_dfa1d7f3&#45;&gt;groups_b63e4e33 -->
<g id="edge8" class="edge">
<title>group_groups_dfa1d7f3:w&#45;&gt;groups_b63e4e33:e</title>
<path fill="none" stroke="black" d="M1299.21,-183.43C1274.4,-183 1261.19,-181.84 1233.16,-181.62"/>
<polygon fill="black" stroke="black" points="1308.17,-183.5 1318.13,-188.08 1313.5,-183.54 1317.83,-183.58 1317.83,-183.58 1317.83,-183.58 1313.5,-183.54 1318.2,-179.08 1308.17,-183.5"/>
<ellipse fill="none" stroke="black" cx="1302.45" cy="-183.45" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="1224.48,-186.59 1224.52,-176.59 1226.52,-176.6 1226.48,-186.6 1224.48,-186.59"/>
<polyline fill="none" stroke="black" points="1223.5,-181.58 1228.5,-181.6"/>
<polygon fill="black" stroke="black" points="1229.48,-186.61 1229.52,-176.61 1231.52,-176.61 1231.48,-186.61 1229.48,-186.61"/>
<polyline fill="none" stroke="black" points="1228.5,-181.6 1233.5,-181.62"/>
</g>
<!-- group_users_41cb40a7 -->
<g id="node7" class="node">
<title>group_users_41cb40a7</title>
<polygon fill="#f2e6c2" stroke="none" points="1325,-124.08 1325,-145.08 1424,-145.08 1424,-124.08 1325,-124.08"/>
<text text-anchor="start" x="1326.88" y="-130.78" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">group_users</text>
<polygon fill="#f2e6c2" stroke="none" points="1424,-124.08 1424,-145.08 1564,-145.08 1564,-124.08 1424,-124.08"/>
<text text-anchor="start" x="1517" y="-129.78" font-family="Helvetica,sans-Serif" font-size="14.00">[table]</text>
<text text-anchor="start" x="1327" y="-109.78" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">group_id</text>
<text text-anchor="start" x="1407" y="-108.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1425.75" y="-108.78" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER NOT NULL</text>
<text text-anchor="start" x="1327" y="-88.78" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">user_id</text>
<text text-anchor="start" x="1407" y="-87.78" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="1425.75" y="-87.78" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER NOT NULL</text>
<polygon fill="none" stroke="#888888" points="1324,-81.08 1324,-146.08 1565,-146.08 1565,-81.08 1324,-81.08"/>
</g>
<!-- group_users_41cb40a7&#45;&gt;groups_b63e4e33 -->
<g id="edge9" class="edge">
<title>group_users_41cb40a7:w&#45;&gt;groups_b63e4e33:e</title>
<path fill="none" stroke="black" d="M1304.58,-117.05C1273.18,-129.88 1270.19,-174.26 1233.11,-180.78"/>
<polygon fill="black" stroke="black" points="1313.33,-115.45 1323.98,-118.07 1318.58,-114.48 1322.84,-113.7 1322.84,-113.7 1322.84,-113.7 1318.58,-114.48 1322.36,-109.22 1313.33,-115.45"/>
<ellipse fill="none" stroke="black" cx="1307.71" cy="-116.48" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="1224.91,-186.48 1224.08,-176.52 1226.07,-176.35 1226.91,-186.32 1224.91,-186.48"/>
<polyline fill="none" stroke="black" points="1223.5,-181.58 1228.48,-181.17"/>
<polygon fill="black" stroke="black" points="1229.89,-186.07 1229.06,-176.1 1231.06,-175.94 1231.89,-185.9 1229.89,-186.07"/>
<polyline fill="none" stroke="black" points="1228.48,-181.17 1233.47,-180.75"/>
</g>
<!-- group_users_41cb40a7&#45;&gt;users_6a70267 -->
<g id="edge17" class="edge">
<title>group_users_41cb40a7:w&#45;&gt;users_6a70267:e</title>
<path fill="none" stroke="black" d="M1304.18,-92.49C874.76,-88.48 691.37,46.75 332,-201.58 301.46,-222.69 323.78,-272.07 297.75,-281.14"/>
<polygon fill="black" stroke="black" points="1313.17,-92.54 1323.14,-97.08 1318.5,-92.56 1322.83,-92.58 1322.83,-92.58 1322.83,-92.58 1318.5,-92.56 1323.19,-88.08 1313.17,-92.54"/>
<ellipse fill="none" stroke="black" cx="1307.45" cy="-92.51" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="289.72,-287.38 288.26,-277.49 290.23,-277.2 291.7,-287.09 289.72,-287.38"/>
<polyline fill="none" stroke="black" points="288,-282.58 292.95,-281.85"/>
<polygon fill="black" stroke="black" points="294.67,-286.65 293.2,-276.76 295.18,-276.46 296.65,-286.36 294.67,-286.65"/>
<polyline fill="none" stroke="black" points="292.95,-281.85 297.89,-281.12"/>
</g>
<!-- logins_be987289 -->
<g id="node9" class="node">
<title>logins_be987289</title>
<polygon fill="#f2e6c2" stroke="none" points="357,-443.58 357,-464.58 462,-464.58 462,-443.58 357,-443.58"/>
<text text-anchor="start" x="359" y="-450.28" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">logins</text>
<polygon fill="#f2e6c2" stroke="none" points="462,-443.58 462,-464.58 608,-464.58 608,-443.58 462,-443.58"/>
<text text-anchor="start" x="561" y="-449.28" font-family="Helvetica,sans-Serif" font-size="14.00">[table]</text>
<text text-anchor="start" x="359" y="-429.28" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">id</text>
<text text-anchor="start" x="455.75" y="-428.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="464" y="-428.28" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER NOT NULL</text>
<text text-anchor="start" x="455.75" y="-407.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="464" y="-407.28" font-family="Helvetica,sans-Serif" font-size="14.00">auto&#45;incremented</text>
<text text-anchor="start" x="359" y="-386.28" font-family="Helvetica,sans-Serif" font-size="14.00">user_id</text>
<text text-anchor="start" x="455.75" y="-386.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="464" y="-386.28" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER NOT NULL</text>
<text text-anchor="start" x="359" y="-365.28" font-family="Helvetica,sans-Serif" font-size="14.00">email</text>
<text text-anchor="start" x="455.75" y="-365.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="463.75" y="-365.28" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<text text-anchor="start" x="358.62" y="-344.28" font-family="Helvetica,sans-Serif" font-size="14.00">display_email</text>
<text text-anchor="start" x="455.75" y="-344.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="463.75" y="-344.28" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<polygon fill="none" stroke="#888888" points="356,-337.58 356,-465.58 609,-465.58 609,-337.58 356,-337.58"/>
</g>
<!-- logins_be987289&#45;&gt;users_6a70267 -->
<g id="edge18" class="edge">
<title>logins_be987289:w&#45;&gt;users_6a70267:e</title>
<path fill="none" stroke="black" d="M337.12,-384.78C311.76,-364.01 332.95,-294.11 297.64,-283.85"/>
<polygon fill="black" stroke="black" points="345.65,-387.47 353.83,-394.77 350.73,-389.08 354.86,-390.38 354.86,-390.38 354.86,-390.38 350.73,-389.08 356.54,-386.19 345.65,-387.47"/>
<ellipse fill="none" stroke="black" cx="340.19" cy="-385.75" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="288.34,-287.67 289.64,-277.76 291.62,-278.02 290.33,-287.93 288.34,-287.67"/>
<polyline fill="none" stroke="black" points="288,-282.58 292.96,-283.23"/>
<polygon fill="black" stroke="black" points="293.3,-288.32 294.6,-278.41 296.58,-278.67 295.28,-288.58 293.3,-288.32"/>
<polyline fill="none" stroke="black" points="292.96,-283.23 297.92,-283.88"/>
</g>
<!-- id_dc7c64b2 -->
<g id="node11" class="node">
<title>id_dc7c64b2</title>
<text text-anchor="start" x="83.88" y="-518.91" font-family="Helvetica,sans-Serif" font-size="14.00">billing_accounts.id</text>
</g>
<!-- orgs_34a26e&#45;&gt;id_dc7c64b2 -->
<g id="edge10" class="edge">
<title>orgs_34a26e:w&#45;&gt;id_dc7c64b2:e</title>
<path fill="none" stroke="black" d="M320.17,-523.58C285.36,-523.58 269.06,-523.58 230.68,-523.58"/>
<polygon fill="black" stroke="black" points="329.17,-523.58 339.17,-528.08 334.5,-523.58 338.83,-523.58 338.83,-523.58 338.83,-523.58 334.5,-523.58 339.17,-519.08 329.17,-523.58"/>
<ellipse fill="none" stroke="black" cx="323.45" cy="-523.58" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="222,-528.58 222,-518.58 224,-518.58 224,-528.58 222,-528.58"/>
<polyline fill="none" stroke="black" points="221,-523.58 226,-523.58"/>
<polygon fill="black" stroke="black" points="227,-528.58 227,-518.58 229,-518.58 229,-528.58 227,-528.58"/>
<polyline fill="none" stroke="black" points="226,-523.58 231,-523.58"/>
</g>
<!-- orgs_34a26e&#45;&gt;users_6a70267 -->
<g id="edge19" class="edge">
<title>orgs_34a26e:w&#45;&gt;users_6a70267:e</title>
<path fill="none" stroke="black" d="M325.84,-543.17C239.04,-523.2 391.49,-297.37 297.85,-283.27"/>
<polygon fill="black" stroke="black" points="339.02,-539.51 337.99,-549.45 336,-549.25 337.03,-539.3 339.02,-539.51"/>
<polyline fill="none" stroke="black" points="339.5,-544.58 334.53,-544.07"/>
<ellipse fill="none" stroke="black" cx="330.05" cy="-543.61" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="288.65,-287.64 289.35,-277.67 291.34,-277.81 290.64,-287.78 288.65,-287.64"/>
<polyline fill="none" stroke="black" points="288,-282.58 292.99,-282.93"/>
<polygon fill="black" stroke="black" points="293.64,-287.99 294.33,-278.02 296.33,-278.15 295.63,-288.13 293.64,-287.99"/>
<polyline fill="none" stroke="black" points="292.99,-282.93 297.98,-283.28"/>
</g>
<!-- prefs_660170f -->
<g id="node12" class="node">
<title>prefs_660170f</title>
<polygon fill="#f2e6c2" stroke="none" points="696,-445.58 696,-466.58 758,-466.58 758,-445.58 696,-445.58"/>
<text text-anchor="start" x="698" y="-452.28" font-family="Helvetica,sans-Serif" font-weight="bold" font-style="italic" font-size="14.00">prefs</text>
<polygon fill="#f2e6c2" stroke="none" points="758,-445.58 758,-466.58 904,-466.58 904,-445.58 758,-445.58"/>
<text text-anchor="start" x="857" y="-451.28" font-family="Helvetica,sans-Serif" font-size="14.00">[table]</text>
<text text-anchor="start" x="698" y="-430.28" font-family="Helvetica,sans-Serif" font-size="14.00">org_id</text>
<text text-anchor="start" x="751.75" y="-430.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="760" y="-430.28" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER</text>
<text text-anchor="start" x="697.88" y="-409.28" font-family="Helvetica,sans-Serif" font-size="14.00">user_id</text>
<text text-anchor="start" x="751.75" y="-409.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="760" y="-409.28" font-family="Helvetica,sans-Serif" font-size="14.00">INTEGER</text>
<text text-anchor="start" x="698" y="-388.28" font-family="Helvetica,sans-Serif" font-size="14.00">prefs</text>
<text text-anchor="start" x="751.75" y="-388.28" font-family="Helvetica,sans-Serif" font-size="14.00"> </text>
<text text-anchor="start" x="759.75" y="-388.28" font-family="Helvetica,sans-Serif" font-size="14.00">VARCHAR NOT NULL</text>
<polygon fill="none" stroke="#888888" points="695,-381.58 695,-467.58 905,-467.58 905,-381.58 695,-381.58"/>
</g>
<!-- prefs_660170f&#45;&gt;orgs_34a26e -->
<g id="edge13" class="edge">
<title>prefs_660170f:w&#45;&gt;orgs_34a26e:e</title>
<path fill="none" stroke="black" d="M676.04,-438.74C607.35,-465.76 718.99,-657.4 635.43,-670.84"/>
<polygon fill="black" stroke="black" points="684.81,-437.28 695.41,-440.08 690.07,-436.41 694.34,-435.69 694.34,-435.69 694.34,-435.69 690.07,-436.41 693.93,-431.2 684.81,-437.28"/>
<ellipse fill="none" stroke="black" cx="679.17" cy="-438.22" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="626.87,-676.5 626.12,-666.52 628.12,-666.37 628.86,-676.35 626.87,-676.5"/>
<polyline fill="none" stroke="black" points="625.5,-671.58 630.49,-671.21"/>
<polygon fill="black" stroke="black" points="631.86,-676.12 631.11,-666.15 633.1,-666 633.85,-675.97 631.86,-676.12"/>
<polyline fill="none" stroke="black" points="630.49,-671.21 635.47,-670.84"/>
</g>
<!-- prefs_660170f&#45;&gt;users_6a70267 -->
<g id="edge20" class="edge">
<title>prefs_660170f:w&#45;&gt;users_6a70267:e</title>
<path fill="none" stroke="black" d="M676.43,-408.64C654.09,-393.14 667.37,-345.27 633,-324.58 625.47,-320.05 353.85,-288.98 297.83,-283.43"/>
<polygon fill="black" stroke="black" points="685.01,-410.93 693.52,-417.85 690.17,-412.3 694.35,-413.41 694.35,-413.41 694.35,-413.41 690.17,-412.3 695.83,-409.15 685.01,-410.93"/>
<ellipse fill="none" stroke="black" cx="679.49" cy="-409.46" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="288.57,-287.65 289.43,-277.69 291.42,-277.86 290.56,-287.82 288.57,-287.65"/>
<polyline fill="none" stroke="black" points="288,-282.58 292.98,-283.01"/>
<polygon fill="black" stroke="black" points="293.55,-288.08 294.41,-278.12 296.4,-278.29 295.54,-288.25 293.55,-288.08"/>
<polyline fill="none" stroke="black" points="292.98,-283.01 297.96,-283.44"/>
</g>
<!-- workspaces_e61add&#45;&gt;orgs_34a26e -->
<g id="edge14" class="edge">
<title>workspaces_e61add:w&#45;&gt;orgs_34a26e:e</title>
<path fill="none" stroke="black" d="M657.73,-671.58C650.41,-671.58 644.29,-671.58 635.42,-671.58"/>
<polygon fill="black" stroke="black" points="666.67,-671.58 676.67,-676.08 672,-671.58 676.33,-671.58 676.33,-671.58 676.33,-671.58 672,-671.58 676.67,-667.08 666.67,-671.58"/>
<ellipse fill="none" stroke="black" cx="660.95" cy="-671.58" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="626.5,-676.58 626.5,-666.58 628.5,-666.58 628.5,-676.58 626.5,-676.58"/>
<polyline fill="none" stroke="black" points="625.5,-671.58 630.5,-671.58"/>
<polygon fill="black" stroke="black" points="631.5,-676.58 631.5,-666.58 633.5,-666.58 633.5,-676.58 631.5,-676.58"/>
<polyline fill="none" stroke="black" points="630.5,-671.58 635.5,-671.58"/>
</g>
<!-- user_id_2d5fdf94 -->
<g id="node15" class="node">
<title>user_id_2d5fdf94</title>
<text text-anchor="start" x="365.12" y="-254.91" font-family="Helvetica,sans-Serif" font-size="14.00">billing_account_managers.user_id</text>
</g>
<!-- user_id_2d5fdf94&#45;&gt;users_6a70267 -->
<g id="edge15" class="edge">
<title>user_id_2d5fdf94:w&#45;&gt;users_6a70267:e</title>
<path fill="none" stroke="black" d="M337.53,-262.88C323.26,-268.29 315.11,-278.78 297.91,-281.77"/>
<polygon fill="black" stroke="black" points="346.32,-261.35 356.94,-264.07 351.57,-260.44 355.84,-259.7 355.84,-259.7 355.84,-259.7 351.57,-260.44 355.4,-255.21 346.32,-261.35"/>
<ellipse fill="none" stroke="black" cx="340.68" cy="-262.33" rx="4" ry="4"/>
<polygon fill="black" stroke="black" points="289.41,-287.49 288.59,-277.52 290.58,-277.35 291.4,-287.32 289.41,-287.49"/>
<polyline fill="none" stroke="black" points="288,-282.58 292.98,-282.17"/>
<polygon fill="black" stroke="black" points="294.39,-287.07 293.57,-277.11 295.56,-276.94 296.38,-286.91 294.39,-287.07"/>
<polyline fill="none" stroke="black" points="292.98,-282.17 297.97,-281.76"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 56 KiB

Loading…
Cancel
Save