gristlabs_grist-core/app/plugin/TableOperations.ts
Paul Fitzpatrick a5f5ecce19 (core) add grist.getTable(tableId) and a getTableId() method in plugin api
Summary:
Makes the new TableOperations API available for all tables
in the document. Adds methods for discovering the tableId of the
selected table. I was very tempted to implement the select() TODO
in the TableOperations API, but it requires a significant refactor
of the backend.

Test Plan: added test

Reviewers: alexmojaki

Reviewed By: alexmojaki

Differential Revision: https://phab.getgrist.com/D3325
2022-03-17 16:31:19 -04:00

48 lines
1.5 KiB
TypeScript

import * as Types from 'app/plugin/DocApiTypes';
/**
* Offer CRUD-style operations on a table.
*/
export interface TableOperations {
// Create a record or records.
create(records: Types.NewRecord, options?: OpOptions): Promise<Types.MinimalRecord>;
create(records: Types.NewRecord[], options?: OpOptions): Promise<Types.MinimalRecord[]>;
// Update a record or records.
update(records: Types.Record|Types.Record[], options?: OpOptions): Promise<void>;
// Delete a record or records.
destroy(recordId: Types.RecordId): Promise<Types.RecordId>;
destroy(recordIds: Types.RecordId[]): Promise<Types.RecordId[]>;
// Add or update a record or records.
upsert(records: Types.AddOrUpdateRecord|Types.AddOrUpdateRecord[],
options?: UpsertOptions): Promise<void>;
// Determine the tableId of the table.
getTableId(): Promise<string>;
// TODO: offer a way to query the table.
// select(): Records;
}
/**
* General options for table operations.
* By default, string field values will be parsed based on the column type.
* This can be disabled.
*/
export interface OpOptions {
parseStrings?: boolean;
}
/**
* Extra options for upserts. By default, add and update are true,
* onMany is first, and allowEmptyRequire is false.
*/
export interface UpsertOptions extends OpOptions {
add?: boolean; // permit inserting a record
update?: boolean; // permit updating a record
onMany?: 'none' | 'first' | 'all'; // whether to update none, one, or all matching records
allowEmptyRequire?: boolean; // allow "wildcard" operation
}