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