UNPKG

@proofkit/fmodata

Version:

FileMaker OData API client

76 lines (75 loc) 3.94 kB
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>>>; }