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 |
||
---|---|---|
.. | ||
docs | ||
export-csv | ||
export-dsv | ||
export-tsv | ||
export-xlsx | ||
plugins | ||
sites | ||
uploads |