UNPKG

@proofkit/fmodata

Version:

FileMaker OData API client

54 lines (53 loc) 2.81 kB
import { FMTable, InferSchemaOutputFromFMTable } from '../orm/table.js'; import { FMODataLayer } from '../services.js'; import { ConditionallyWithODataAnnotations, ConditionallyWithSpecialColumns, ExecutableBuilder, ExecuteMethodOptions, ExecuteOptions, NormalizeIncludeSpecialColumns, Result } from '../types.js'; export interface InsertOptions { return?: "minimal" | "representation"; } export declare class InsertBuilder<Occ extends FMTable<any, any> | undefined = undefined, ReturnPreference extends "minimal" | "representation" = "representation", DatabaseIncludeSpecialColumns extends boolean = false> implements ExecutableBuilder<ReturnPreference extends "minimal" ? { ROWID: number; } : ConditionallyWithSpecialColumns<InferSchemaOutputFromFMTable<NonNullable<Occ>>, DatabaseIncludeSpecialColumns, 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<NonNullable<Occ>>>; returnPreference?: ReturnPreference; }); /** * Helper to merge database-level useEntityIds with per-request options */ private mergeExecuteOptions; /** * Parse ROWID from Location header * Expected formats: * - contacts(ROWID=4583) * - contacts('some-uuid') */ private parseLocationHeader; /** * Gets the table ID (FMTID) if using entity IDs, otherwise returns the table name * @param useEntityIds - Optional override for entity ID usage */ private getTableId; /** * Builds the schema for validation, excluding container fields. */ private getValidationSchema; execute<EO extends ExecuteOptions>(options?: ExecuteMethodOptions<EO>): Promise<Result<ReturnPreference extends "minimal" ? { ROWID: number; } : ConditionallyWithODataAnnotations<ConditionallyWithSpecialColumns<InferSchemaOutputFromFMTable<NonNullable<Occ>>, NormalizeIncludeSpecialColumns<EO["includeSpecialColumns"], DatabaseIncludeSpecialColumns>, false>, EO["includeODataAnnotations"] extends true ? true : 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" ? { ROWID: number; } : ConditionallyWithSpecialColumns<InferSchemaOutputFromFMTable<NonNullable<Occ>>, NormalizeIncludeSpecialColumns<EO extends ExecuteOptions ? EO["includeSpecialColumns"] : undefined, DatabaseIncludeSpecialColumns>, false>>>; }