UNPKG

@simonecoelhosfo/optimizely-mcp-server

Version:

Optimizely MCP Server for AI assistants with integrated CLI tools

109 lines 3.07 kB
/** * SQL Builder for Intelligent Query Engine * * Builds SQL queries using field location information from the Field Catalog */ import { FieldCatalog } from './FieldCatalog.js'; import { DateFunctionHandler } from './DateFunctionHandler.js'; import { FieldDisambiguator } from './FieldDisambiguator.js'; import { JSONPathHandler } from './JSONPathHandler.js'; import { CardinalityGuard } from './CardinalityGuard.js'; import { QueryComplexityFirewall } from '../QueryComplexityFirewall.js'; import type { UniversalQuery } from './types.js'; export declare class SQLBuilder { private fieldCatalog; private requiredJoins; private joinClauses; protected dateHandler: DateFunctionHandler; protected fieldDisambiguator: FieldDisambiguator; protected jsonHandler: JSONPathHandler; protected cardinalityGuard: CardinalityGuard; protected complexityFirewall: QueryComplexityFirewall; private currentQuery; private viewOnlyBuilder; private useViewOnlyMode; constructor(fieldCatalog: FieldCatalog); /** * Build SQL query from UniversalQuery */ buildSQL(query: UniversalQuery): Promise<string>; /** * Build SELECT clause with field mapping */ private buildSelectClause; /** * Build FROM clause */ private buildFromClause; /** * Detect if this is an environment comparison query */ private isEnvironmentComparisonQuery; /** * Build WHERE clause with field mapping */ private buildWhereClause; /** * Process JSON functions to inject proper column names */ private processJSONFunction; /** * Build standard (non-date) condition */ private buildStandardCondition; /** * Build GROUP BY clause with field mapping */ private buildGroupByClause; /** * Map field location to SQL expression */ private mapFieldToSQL; /** * Add a required join */ private addRequiredJoin; /** * Build JOIN clauses */ private buildJoinClauses; /** * Build ORDER BY clause */ private buildOrderByClause; /** * Build HAVING clause */ private buildHavingClause; /** * Validate query cardinality to prevent JOIN explosion */ private validateQueryCardinality; /** * Determine query type for cardinality validation */ private determineQueryType; /** * Analyze query complexity using the QueryComplexityFirewall */ private analyzeQueryComplexity; /** * Convert problematic field references to valid ones * CRITICAL FIX: Handle fields that don't exist on specific tables */ private convertProblemFields; /** * Add variations JOIN if needed */ private addVariationsJoin; /** * Add flag_environments JOIN if needed */ private addFlagEnvironmentJoin; /** * Add rules JOIN if needed * [FIX] L2-2 FIX: Rules contain variations data */ private addRulesJoin; } //# sourceMappingURL=SQLBuilder.d.ts.map