@proofkit/fmodata
Version:
FileMaker OData API client
76 lines (75 loc) • 3.94 kB
TypeScript
import { FMTable, InferSchemaOutputFromFMTable } from '../orm/table.js';
import { FMODataLayer } from '../services.js';
import { ConditionallyWithSpecialColumns, ExecutableBuilder, ExecuteMethodOptions, ExecuteOptions, NormalizeIncludeSpecialColumns, Result } from '../types.js';
import { RecordLocator } from './builders/mutation-helpers.js';
import { QueryBuilder } from './query-builder.js';
/**
* Initial update builder returned from EntitySet.update(data)
* Requires calling .byId() or .where() before .execute() is available
*/
export declare class UpdateBuilder<Occ extends FMTable<any, any>, ReturnPreference extends "minimal" | "representation" = "minimal", DatabaseIncludeSpecialColumns extends boolean = false> {
private readonly table;
private readonly data;
private readonly returnPreference;
private readonly layer;
private readonly config;
constructor(config: {
occurrence: Occ;
layer: FMODataLayer;
data: Partial<InferSchemaOutputFromFMTable<Occ>>;
returnPreference: ReturnPreference;
});
/**
* Update a single record by ID
* Returns updated count by default, or full record if returnFullRecord was set to true
*/
byId(id: string | number): ExecutableUpdateBuilder<Occ, true, ReturnPreference, DatabaseIncludeSpecialColumns>;
/**
* Update a single record by ROWID
*/
byRowId(rowId: number): ExecutableUpdateBuilder<Occ, true, ReturnPreference>;
/**
* Update records matching a filter query
* Returns updated count by default, or full record if returnFullRecord was set to true
* @param fn Callback that receives a QueryBuilder for building the filter
*/
where(fn: (q: QueryBuilder<Occ>) => QueryBuilder<Occ>): ExecutableUpdateBuilder<Occ, true, ReturnPreference, DatabaseIncludeSpecialColumns>;
}
/**
* Executable update builder - has execute() method
* Returned after calling .byId() or .where()
* Can return either updated count or full record based on returnFullRecord option
*/
export declare class ExecutableUpdateBuilder<Occ extends FMTable<any, any>, _IsByFilter extends boolean, ReturnPreference extends "minimal" | "representation" = "minimal", DatabaseIncludeSpecialColumns extends boolean = false> implements ExecutableBuilder<ReturnPreference extends "minimal" ? {
updatedCount: number;
} : ConditionallyWithSpecialColumns<InferSchemaOutputFromFMTable<Occ>, DatabaseIncludeSpecialColumns, false>> {
private readonly table;
private readonly data;
private readonly mode;
private readonly recordLocator?;
private readonly queryBuilder?;
private readonly returnPreference;
private readonly layer;
private readonly config;
constructor(config: {
occurrence: Occ;
layer: FMODataLayer;
data: Partial<InferSchemaOutputFromFMTable<Occ>>;
mode: "byId" | "byFilter";
recordLocator?: RecordLocator;
queryBuilder?: QueryBuilder<Occ>;
returnPreference: ReturnPreference;
});
execute<EO extends ExecuteOptions>(options?: ExecuteMethodOptions<EO>): Promise<Result<ReturnPreference extends "minimal" ? {
updatedCount: number;
} : ConditionallyWithSpecialColumns<InferSchemaOutputFromFMTable<Occ>, NormalizeIncludeSpecialColumns<EO["includeSpecialColumns"], DatabaseIncludeSpecialColumns>, false>>>;
getRequestConfig(): {
method: string;
url: string;
body?: any;
};
toRequest(baseUrl: string, options?: ExecuteOptions): Request;
processResponse<EO extends ExecuteOptions | undefined = undefined>(response: Response, options?: EO): Promise<Result<ReturnPreference extends "minimal" ? {
updatedCount: number;
} : ConditionallyWithSpecialColumns<InferSchemaOutputFromFMTable<Occ>, NormalizeIncludeSpecialColumns<EO extends ExecuteOptions ? EO["includeSpecialColumns"] : undefined, DatabaseIncludeSpecialColumns>, false>>>;
}