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; create(records: Types.NewRecord[], options?: OpOptions): Promise; // Update a record or records. update(records: Types.Record|Types.Record[], options?: OpOptions): Promise; // Delete a record or records. destroy(recordId: Types.RecordId): Promise; destroy(recordIds: Types.RecordId[]): Promise; // Add or update a record or records. upsert(records: Types.AddOrUpdateRecord|Types.AddOrUpdateRecord[], options?: UpsertOptions): Promise; // 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 }