@simonecoelhosfo/optimizely-mcp-server
Version:
Optimizely MCP Server for AI assistants with integrated CLI tools
109 lines • 3.07 kB
TypeScript
/**
* 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