qb-table
Version:
A lightweight abstraction layer for Quick Base
126 lines (125 loc) • 7.07 kB
TypeScript
import { QuickBase, QuickBaseOptions, QuickBaseResponseDeleteTable, QuickBaseResponseDeleteRecords, QuickBaseResponseRunQuery, QuickBaseRequestRunQuery, QuickBaseRequest, QuickBaseResponseGetTable } from 'quickbase';
import { QBField, QBFieldJSON, QBFieldAttributeSavable } from 'qb-field';
import { QBFids, QBRecord, QBRecordData } from 'qb-record';
import { QBReport, QBReportRunResponse, QBReportRunRequest } from 'qb-report';
export declare class QBTable<RecordData extends QBRecordData = QBRecordData, CustomGetSet extends Object = Record<any, any>> {
readonly CLASS_NAME = "QBTable";
static readonly CLASS_NAME = "QBTable";
/**
* The loaded library version
*/
static readonly VERSION: string;
/**
* The default settings of a `QuickBase` instance
*/
static defaults: QBTableOptions;
/**
* An internal id (guid) used for tracking/managing object instances
*/
id: string;
private _qb;
private _appId;
private _tableId;
private _fids;
private _fields;
private _records;
private _reports;
private _data;
constructor(options?: Partial<QBTableOptions<RecordData>>);
clear(): this;
delete({ requestOptions }?: QuickBaseRequest): Promise<QuickBaseResponseDeleteTable>;
deleteRecord({ record, requestOptions }: {
record: QBRecord<RecordData>;
} & QuickBaseRequest): Promise<QuickBaseResponseDeleteRecords>;
deleteRecords({ individually, records, requestOptions }?: {
individually?: boolean;
records?: QBRecord<RecordData>[];
} & QuickBaseRequest): Promise<QuickBaseResponseDeleteRecords>;
get(attribute: 'id' | 'appId' | 'tableId'): string;
get<P extends keyof QuickBaseResponseGetTable>(attribute: P): QuickBaseResponseGetTable[P];
get<P extends keyof CustomGetSet>(attribute: P): CustomGetSet[P];
get<P extends string>(attribute: P): P extends keyof QuickBaseResponseGetTable ? QuickBaseResponseGetTable[P] : (P extends keyof CustomGetSet ? CustomGetSet[P] : any);
getAppId(): string;
getFid<T extends keyof RecordData>(field: T): number;
getFid(field: string | number, byId?: false | undefined): number;
getFid(field: number, byId: true): string;
getFids(): QBFids<RecordData>;
getField(id: number, returnIndex: true): number | undefined;
getField(id: number, returnIndex?: false): QBField | undefined;
getFields(): QBField[];
getNRecords(): number;
getRecord<T extends keyof RecordData>(value: RecordData[T], fieldName: T, returnIndex: true): number;
getRecord<T extends keyof RecordData>(value: RecordData[T], fieldName: T, returnIndex?: false): QBRecord<RecordData> | undefined;
getRecord(value: any, fieldName: string, returnIndex: true): number;
getRecord(value: any, fieldName?: string, returnIndex?: false | undefined): QBRecord<RecordData> | undefined;
getRecords(): QBRecord<RecordData>[];
getReport(id: string): QBReport<RecordData> | undefined;
getReports(): QBReport<RecordData>[];
getTableId(): string;
getTempToken({ requestOptions }?: QuickBaseRequest): Promise<void>;
loadField({ field, requestOptions }: QuickBaseRequest & {
field: number | QBField;
}): Promise<QBField>;
loadFields({ requestOptions }?: QuickBaseRequest): Promise<QBField[]>;
loadReport({ report, requestOptions }: QuickBaseRequest & {
report: string | QBReport<RecordData>;
}): Promise<QBReport<RecordData>>;
loadReports({ requestOptions }?: QuickBaseRequest): Promise<QBReport<RecordData>[]>;
loadSchema({ requestOptions }?: QuickBaseRequest): Promise<QuickBaseResponseGetTable & {
fields: QBField[];
reports: QBReport<RecordData>[];
}>;
loadTable({ requestOptions }?: QuickBaseRequest): Promise<QuickBaseResponseGetTable>;
private _runQueryAll;
runQuery({ fids, groupBy, options, select, sortBy, where, returnAll, requestOptions }?: QBTableRunQueryOptions): Promise<QBTableRunQueryResponse<RecordData>>;
runReport({ report, skip, top, requestOptions }: QBReportRunRequest & {
report: string | QBReport<RecordData>;
}): Promise<QBReportRunResponse<RecordData>>;
saveFields({ attributesToSave, requestOptions }?: {
attributesToSave?: QBFieldAttributeSavable[];
} & QuickBaseRequest): Promise<QBField[]>;
saveRecords({ individually, fidsToSave, recordsToSave, mergeFieldId, requestOptions }?: {
individually?: boolean;
fidsToSave?: (keyof RecordData | number)[];
mergeFieldId?: number;
recordsToSave?: QBRecord<RecordData>[];
} & QuickBaseRequest): Promise<QBRecord<RecordData>[]>;
saveTable({ attributesToSave, requestOptions }?: {
attributesToSave?: string[];
} & QuickBaseRequest): Promise<QuickBaseResponseGetTable>;
set(attribute: 'id' | 'tableId' | 'appid', value: string): this;
set<P extends keyof QuickBaseResponseGetTable>(attribute: P, value: QuickBaseResponseGetTable[P]): this;
set<P extends keyof CustomGetSet>(attribute: P, value: CustomGetSet[P]): this;
set<P extends string>(attribute: P, value: P extends keyof QuickBaseResponseGetTable ? QuickBaseResponseGetTable[P] : (P extends keyof CustomGetSet ? CustomGetSet[P] : any)): this;
setAppId(appId: string): this;
setFid<T extends keyof RecordData>(name: T, id: number): this;
setFid(name: string | number, id: number): this;
setFids(fields: Record<any, number>): this;
setTableId(tableId: string): this;
upsertField(options: QBField | Partial<QBFieldJSON['data']>, autoSave?: boolean): Promise<QBField>;
upsertFields(fields: (Partial<QBFieldJSON> | QBField)[], autoSave?: boolean): Promise<QBField[]>;
upsertRecord(options?: QBRecord<RecordData> | Partial<RecordData>, autoSave?: boolean): Promise<QBRecord<RecordData>>;
upsertRecords(records: (QBRecord<RecordData> | Partial<RecordData>)[], autoSave?: boolean): Promise<QBRecord<RecordData>[]>;
/**
* Test if a variable is a `qb-record` object
*
* @param obj A variable you'd like to test
*/
static IsQBTable<T extends QBRecordData = QBRecordData, K extends Object = Record<any, any>>(obj: any): obj is QBTable<T, K>;
static NewRecord<T extends QBRecordData, K extends Object>(table: QBTable<T, K>, data?: Partial<T>): QBRecord<T>;
static ToCSV<T extends QBRecordData, K extends Object>(table: QBTable<T, K>, columns: (keyof T)[], data?: QBRecord<T>[]): string;
}
export declare type QBTableOptions<RecordData extends QBRecordData = {}> = {
quickbase: QuickBaseOptions | QuickBase;
appId: string;
tableId: string;
fids: Partial<QBFids<RecordData>>;
};
export declare type QBTableRunQueryOptions = {
fids?: Record<string, number>;
returnAll?: boolean;
} & Pick<QuickBaseRequestRunQuery, 'select' | 'where' | 'options' | 'sortBy' | 'groupBy' | 'requestOptions'>;
export declare type QBTableRunQueryResponse<RecordData extends QBRecordData = {}> = Pick<QuickBaseResponseRunQuery, 'metadata'> & {
records: QBRecord<RecordData>[];
fields: QBField[];
};