UNPKG

@proofkit/fmodata

Version:

FileMaker OData API client

67 lines (66 loc) 2.44 kB
import { FMTable } from '../../orm/table.js'; import { RecordLocator } from '../builders/mutation-helpers.js'; /** * Configuration for navigation from RecordBuilder or EntitySet */ export interface NavigationConfig { recordLocator?: RecordLocator; relation: string; relationEntityId?: string; sourceTableName: string; sourceTableEntityId?: string; baseRelation?: string; baseRelationEntityId?: string; basePath?: string; basePathEntityId?: string; } /** * Builds OData query URLs for different navigation modes. * Handles: * - Record navigation: /database/sourceTable('recordId')/relation * - Entity set navigation: /database/sourceTable/relation * - Count endpoint: /database/tableId/$count * - Standard queries: /database/tableId */ export declare class QueryUrlBuilder { private readonly databaseName; private readonly occurrence; private readonly useEntityIds; constructor(databaseName: string, occurrence: FMTable<any, any>, useEntityIds: boolean); /** * Builds the full URL for a query request. * * @param queryString - The OData query string (e.g., "?$filter=...&$select=...") * @param options - Options including whether this is a count query, useEntityIds override, and navigation config */ build(queryString: string, options: { isCount?: boolean; useEntityIds?: boolean; navigation?: NavigationConfig; }): string; /** * Builds a query string path (without database prefix) for getQueryString(). * Used when the full URL is not needed. */ buildPath(queryString: string, options?: { isCount?: boolean; useEntityIds?: boolean; navigation?: NavigationConfig; }): string; /** * Build URL for record operations (single record by ID). * Used by RecordBuilder to build URLs like /database/table('id'). * * @param recordLocator - The record locator * @param queryString - The OData query string (e.g., "?$select=...") * @param options - Options including operation type and useEntityIds override */ buildRecordUrl(recordLocator: RecordLocator, queryString: string, options?: { operation?: "getSingleField"; operationParam?: string; useEntityIds?: boolean; isNavigateFromEntitySet?: boolean; navigateSourceTableName?: string; navigateRelation?: string; }): string; }