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(recordIds: Types.RecordId|Types.RecordId[]): Promise; /** * Add or update a record or records. */ upsert(records: Types.AddOrUpdateRecord|Types.AddOrUpdateRecord[], options?: UpsertOptions): Promise; /** * Determine the tableId of the table. */ getTableId(): Promise; // TODO: offer a way to query the table. // select(): Records; } /** * General options for table operations. */ export interface OpOptions { /** Whether to parse strings based on the column type. Defaults to true. */ parseStrings?: boolean; } /** * Extra options for upserts. */ export interface UpsertOptions extends OpOptions { /** Permit inserting a record. Defaults to true. */ add?: boolean; /** Permit updating a record. Defaults to true. */ update?: boolean; /** Whether to update none, one, or all matching records. Defaults to "first". */ onMany?: 'none' | 'first' | 'all'; /** Allow "wildcard" operation. Defaults to false. */ allowEmptyRequire?: boolean; }