mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
1d2cf3de49
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 |
||
---|---|---|
.. | ||
client | ||
client-harness | ||
common | ||
deployment | ||
fixtures | ||
formula-dataset | ||
gen-server | ||
nbrowser | ||
nbrowser_with_stubs | ||
server | ||
timings | ||
.eslintrc.js | ||
chai-as-promised.js | ||
declarations.d.ts | ||
init-mocha-webdriver.js | ||
report-why-tests-hang.js | ||
setupPaths.js | ||
split-tests.js | ||
test_env.sh | ||
test_under_docker.sh | ||
testUtils.ts | ||
tsconfig.json | ||
upgradeDocument | ||
upgradeDocumentImpl.ts | ||
utils.js | ||
xunit-file.js |