mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
1864b7ba5d
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.