UNPKG

@proofkit/fmodata

Version:
59 lines (58 loc) 2.25 kB
import { ExecutionContext, ExecutableBuilder, Result, ExecuteOptions, ConditionallyWithODataAnnotations } from '../types.js'; import { TableOccurrence } from './table-occurrence.js'; import { FFetchOptions } from '@fetchkit/ffetch'; export type InsertOptions = { return?: "minimal" | "representation"; }; export declare class InsertBuilder<T extends Record<string, any>, Occ extends TableOccurrence<any, any, any, any> | undefined = undefined, ReturnPreference extends "minimal" | "representation" = "representation"> implements ExecutableBuilder<ReturnPreference extends "minimal" ? { ROWID: number; } : T> { private occurrence?; private tableName; private databaseName; private context; private data; private returnPreference; private databaseUseEntityIds; constructor(config: { occurrence?: Occ; tableName: string; databaseName: string; context: ExecutionContext; data: Partial<T>; returnPreference?: ReturnPreference; databaseUseEntityIds?: boolean; }); /** * Helper to merge database-level useEntityIds with per-request options */ private mergeExecuteOptions; /** * Helper to conditionally strip OData annotations based on options */ private stripODataAnnotationsIfNeeded; /** * 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; execute<EO extends ExecuteOptions>(options?: RequestInit & FFetchOptions & EO): Promise<Result<ReturnPreference extends "minimal" ? { ROWID: number; } : ConditionallyWithODataAnnotations<T, EO["includeODataAnnotations"] extends true ? true : false>>>; getRequestConfig(): { method: string; url: string; body?: any; }; toRequest(baseUrl: string): Request; processResponse(response: Response, options?: ExecuteOptions): Promise<Result<ReturnPreference extends "minimal" ? { ROWID: number; } : T>>; }