UNPKG

@proofkit/fmodata

Version:
93 lines (92 loc) 3.64 kB
import { ExecutionContext, ExecutableBuilder, Result, WithSystemFields, ExecuteOptions } from '../types.js'; import { TableOccurrence } from './table-occurrence.js'; import { BaseTable } from './base-table.js'; import { QueryBuilder } from './query-builder.js'; import { FFetchOptions } from '@fetchkit/ffetch'; /** * Initial update builder returned from EntitySet.update(data) * Requires calling .byId() or .where() before .execute() is available */ export declare class UpdateBuilder<T extends Record<string, any>, BT extends BaseTable<any, any, any, any>, ReturnPreference extends "minimal" | "representation" = "minimal"> { private tableName; private databaseName; private context; private occurrence?; private data; private returnPreference; private databaseUseEntityIds; constructor(config: { occurrence?: TableOccurrence<any, any, any, any>; tableName: string; databaseName: string; context: ExecutionContext; data: Partial<T>; returnPreference: ReturnPreference; databaseUseEntityIds?: boolean; }); /** * 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<T, 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<WithSystemFields<T>>) => QueryBuilder<WithSystemFields<T>>): ExecutableUpdateBuilder<T, true, ReturnPreference>; } /** * 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<T extends Record<string, any>, IsByFilter extends boolean, ReturnPreference extends "minimal" | "representation" = "minimal"> implements ExecutableBuilder<ReturnPreference extends "minimal" ? { updatedCount: number; } : T> { private tableName; private databaseName; private context; private occurrence?; private data; private mode; private recordId?; private queryBuilder?; private returnPreference; private databaseUseEntityIds; constructor(config: { occurrence?: TableOccurrence<any, any, any, any>; tableName: string; databaseName: string; context: ExecutionContext; data: Partial<T>; mode: "byId" | "byFilter"; recordId?: string | number; queryBuilder?: QueryBuilder<any>; returnPreference: ReturnPreference; databaseUseEntityIds?: boolean; }); /** * Helper to merge database-level useEntityIds with per-request options */ private mergeExecuteOptions; /** * 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(options?: RequestInit & FFetchOptions & { useEntityIds?: boolean; }): Promise<Result<ReturnPreference extends "minimal" ? { updatedCount: number; } : T>>; getRequestConfig(): { method: string; url: string; body?: any; }; toRequest(baseUrl: string): Request; processResponse(response: Response, options?: ExecuteOptions): Promise<Result<ReturnPreference extends "minimal" ? { updatedCount: number; } : T>>; }