UNPKG

@simonecoelhosfo/optimizely-mcp-server

Version:

Optimizely MCP Server for AI assistants with integrated CLI tools

98 lines 2.87 kB
/** * Multi-Table SQL Builder - Phase 4A Implementation * * Extends SQLBuilder to handle complex multi-entity joins using JoinPathPlanner * Generates optimized SQL for queries across multiple entities. */ import { SQLBuilder } from './SQLBuilder.js'; import { type JoinPath } from './JoinPathPlanner.js'; import { FieldCatalog } from './FieldCatalog.js'; import type { UniversalQuery } from './types.js'; export interface MultiEntityQuery extends UniversalQuery { entities?: string[]; joinPaths?: JoinPath[]; } export interface FieldMapping { originalField: string; resolvedField: string; entity: string; table: string; requiresJoin: boolean; joinPath?: JoinPath[]; } export declare class MultiTableSQLBuilder extends SQLBuilder { private joinPathPlanner; private activeJoinPaths; private fieldMappings; constructor(fieldCatalog: FieldCatalog); /** * Get access to the field catalog */ protected getFieldCatalog(): FieldCatalog; /** * Build SQL for multi-entity queries */ buildMultiEntitySQL(query: MultiEntityQuery): Promise<string>; /** * Discover all entities required for the query */ private discoverRequiredEntities; /** * Extract entity name from qualified field (e.g., "experiments.name" -> "experiments") */ private extractEntityFromField; /** * Resolve all fields across multiple entities */ resolveFieldsAcrossEntities(query: MultiEntityQuery): Promise<FieldMapping[]>; /** * Resolve field with entity context */ private resolveFieldWithEntity; /** * Build complex JOIN clause for multiple entities */ buildComplexJoinClause(joinPaths: JoinPath[]): string; /** * Build SELECT clause for multi-entity query */ private buildMultiEntitySelectClause; /** * Build WHERE clause for multi-entity query */ private buildMultiEntityWhereClause; /** * Build standard (non-date) condition for multi-entity queries */ private buildMultiEntityStandardCondition; /** * Build GROUP BY clause for multi-entity query */ private buildMultiEntityGroupByClause; /** * Build ORDER BY clause for multi-entity query */ private buildMultiEntityOrderByClause; /** * Build HAVING clause for multi-entity query */ private buildMultiEntityHavingClause; /** * Map field location to SQL expression */ private mapFieldLocationToSQL; /** * Get table name for entity */ private getTableName; /** * Get join path statistics */ getJoinStatistics(): { totalJoinPaths: number; entitiesInvolved: string[]; totalCost: number; joinTypes: Record<string, number>; }; } //# sourceMappingURL=MultiTableSQLBuilder.d.ts.map