@proofkit/fmodata
Version:
FileMaker OData API client
54 lines (53 loc) • 2.81 kB
TypeScript
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>>>;
}