gristlabs_grist-core/test/server
Jarosław Sadziński 1d2cf3de49 (core) Adding backend for 2-way references
Summary:
Adding support for 2-way references in data engine.

- Columns have an `reverseCol` field, which says "this is a reverse of the given column, update me when that one changes".
- At the time of setting `reverseCol`, we ensure that it's symmetrical to make a 2-way reference.
- Elsewhere we just implement syncing in one direction:
  - When `reverseCol` is present, user code is generated with a type like `grist.ReferenceList("Tasks", reverse_of="Assignee")`
  - On updating a ref column, we use `prepare_new_values()` method to generate corresponding updates to any column that's a reverse of it.
  - The `prepare_new_values()` approach is extended to support this.
  - We don't add (or remove) any mappings between rows, and rely on existing mappings (in a ref column's `_relation`) to create reverse updates.

NOTE This is polished version of https://phab.getgrist.com/D4307 with tests and 3 bug fixes
- Column transformation didn't work when transforming RefList to Ref, the reverse column became out of sync
- Tables with reverse columns couldn't be removed
- Setting json arrays to RefList didn't work if arrays contained other things besides ints
Those fixes are covered by new tests.

Test Plan: New tests

Reviewers: georgegevoian, paulfitz, dsagal

Reviewed By: georgegevoian, paulfitz

Subscribers: dsagal

Differential Revision: https://phab.getgrist.com/D4322
2024-09-11 22:31:36 +02:00
..
lib (core) Adding backend for 2-way references 2024-09-11 22:31:36 +02:00
utils (core) sanitizing redis errors 2023-06-06 10:51:17 +02:00
Comm.ts (core) Enabling telemetry on /api/version endpoint 2024-06-27 12:05:15 +02:00
customUtil.ts (core) Adding latest version section to the admin panel. 2024-04-29 21:59:36 +02:00
docTools.ts (core) Porting the AI evaluation script 2023-03-15 14:54:28 +01:00
fixSiteProducts.ts Add tests for UsersManager (#1149) 2024-09-05 16:30:04 -04:00
generateInitialDocSql.ts update comment 2023-01-17 15:59:09 -05:00
gristClient.ts Bump dependencies versions 2024-04-29 14:54:36 -04:00
tcpForwarder.ts (core) Add options to /status health-check endpoints to check DB and Redis liveness. 2023-10-02 14:41:04 -04:00
testUtils.ts (core) Endpoint to report on the latest version of stable grist-core image 2024-04-09 17:03:49 +02:00
wait.ts (core) Add timeouts to prevent ActiveDoc bad state during shutdown. 2023-09-26 15:32:49 -04:00