mirror of
https://github.com/gristlabs/grist-core.git
synced 2025-06-13 20:53:59 +00:00
Summary: This diff adds a new `BulkAddOrUpdateRecord` user action which is what is sounds like: - A bulk version of the existing `AddOrUpdateRecord` action. - Much more efficient for operating on many records than applying many individual actions. - Column values are specified as maps from `colId` to arrays of values as usual. - Produces bulk versions of `AddRecord` and `UpdateRecord` actions instead of many individual actions. Examples of users wanting to use something like `AddOrUpdateRecord` with large numbers of records: - https://grist.slack.com/archives/C0234CPPXPA/p1651789710290879 - https://grist.slack.com/archives/C0234CPPXPA/p1660743493480119 - https://grist.slack.com/archives/C0234CPPXPA/p1660333148491559 - https://grist.slack.com/archives/C0234CPPXPA/p1663069291726159 I tested what made many `AddOrUpdateRecord` actions slow in the first place. It was almost entirely due to producing many individual `AddRecord` user actions. About half of that time was for processing the resulting `AddRecord` doc actions. Lookups and updates were not a problem. With these changes, the slowness is gone. The Python user action implementation is more complex but there are no surprises. The JS API now groups `records` based on the keys of `require` and `fields` so that `BulkAddOrUpdateRecord` can be applied to each group. Test Plan: Update and extend Python and DocApi tests. Reviewers: jarek, paulfitz Reviewed By: jarek, paulfitz Subscribers: jarek Differential Revision: https://phab.getgrist.com/D3642 |
||
|---|---|---|
| .. | ||
| CustomSectionAPI-ti.ts | ||
| CustomSectionAPI.ts | ||
| DocApiTypes-ti.ts | ||
| DocApiTypes.ts | ||
| FileParserAPI-ti.ts | ||
| FileParserAPI.ts | ||
| grist-plugin-api.ts | ||
| GristAPI-ti.ts | ||
| GristAPI.ts | ||
| GristData-ti.ts | ||
| GristData.ts | ||
| GristTable-ti.ts | ||
| GristTable.ts | ||
| gutil.ts | ||
| ImportSourceAPI-ti.ts | ||
| ImportSourceAPI.ts | ||
| InternalImportSourceAPI-ti.ts | ||
| InternalImportSourceAPI.ts | ||
| objtypes.ts | ||
| PluginManifest-ti.ts | ||
| PluginManifest.ts | ||
| README.md | ||
| RenderOptions-ti.ts | ||
| RenderOptions.ts | ||
| StorageAPI-ti.ts | ||
| StorageAPI.ts | ||
| TableOperations.ts | ||
| TableOperationsImpl.ts | ||
| tsconfig.json | ||
| TypeCheckers.ts | ||
| WidgetAPI-ti.ts | ||
| WidgetAPI.ts | ||
Methods here are available for use in Grist custom widgets.