UNPKG

@simonecoelhosfo/optimizely-mcp-server

Version:

Optimizely MCP Server for AI assistants with integrated CLI tools

117 lines 4.03 kB
/** * Enhanced Flattening Requirement Detection System - Phase 3.2 Task 3.2.3 * * This system analyzes SQL queries to detect when array/object flattening is required * and provides intelligent recommendations for optimal query execution strategy. * * Key Features: * - Integrates with 100% validated AdvancedSQLParser * - Detects array access patterns (variations.key, audiences.conditions) * - Identifies nested object references requiring flattening * - Provides performance impact estimates * - Generates specific flattening strategies * - Supports multi-stage query optimization */ type EntityType = 'flags' | 'experiments' | 'audiences' | 'attributes' | 'events' | 'pages' | 'campaigns' | 'categories' | 'flag_stats' | 'unknown'; export interface FlatteningRequirement { entity: string; entityType: EntityType; flatteningType: 'ARRAY_TO_ROWS' | 'OBJECT_TO_COLUMNS' | 'JSON_EXTRACT' | 'HYBRID'; priority: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW'; fieldPath: string[]; accessPattern: string; estimatedImpact: FlatteningImpact; strategy: FlatteningStrategy; } export interface FlatteningImpact { performanceGain: number; memoryIncrease: number; complexityReduction: number; riskLevel: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL'; affectedRowCount: number; } export interface FlatteningStrategy { approach: 'PRE_FILTER_FLATTEN' | 'SELECTIVE_FLATTEN' | 'MATERIALIZED_VIEW' | 'DYNAMIC_UNNEST'; steps: FlatteningStep[]; alternativeApproaches: string[]; optimizationHints: string[]; } export interface FlatteningStep { order: number; operation: string; description: string; sqlFragment: string; estimatedCost: number; } export interface FlatteningAnalysisResult { queryId: string; originalQuery: string; requiresFlattening: boolean; requirements: FlatteningRequirement[]; overallComplexity: 'SIMPLE' | 'MODERATE' | 'COMPLEX' | 'EXTREME'; recommendedStrategy: 'DIRECT_EXECUTE' | 'SINGLE_FLATTEN' | 'MULTI_STAGE_FLATTEN' | 'MATERIALIZED_CACHE'; estimatedPerformanceGain: number; potentialRisks: string[]; optimizedQueryPlan: string; } export interface OptimizelyFieldMapping { entity: EntityType; arrayFields: string[]; objectFields: string[]; nestedArrays: string[]; commonPatterns: string[]; flatteningComplexity: number; } export declare class EnhancedFlatteningDetector { private optimizelyMappings; private performanceMetrics; constructor(); /** * Main analysis method that detects flattening requirements */ analyzeQueryFlattening(parsedQuery: any, // From AdvancedSQLParser entityType: EntityType, options?: { strictMode?: boolean; performanceThreshold?: number; maxComplexity?: number; }): FlatteningAnalysisResult; /** * Detect specific flattening requirements from parsed query */ private detectFlatteningRequirements; /** * Analyze a single dynamic reference for flattening requirements */ private analyzeDynamicReference; /** * Calculate priority for array flattening based on field importance */ private calculateArrayFlatteningPriority; /** * Calculate the performance impact of flattening */ private calculateFlatteningImpact; /** * Generate specific flattening strategy */ private generateFlatteningStrategy; /** * Initialize Optimizely-specific field mappings */ private initializeOptimizelyMappings; /** * Initialize performance metrics for estimation */ private initializePerformanceMetrics; private detectImplicitArrayAccess; private deduplicateAndPrioritize; private comparePriority; private analyzeQueryComplexity; private generateOptimizationStrategy; private estimatePerformanceGain; private analyzeRisks; private generateOptimizedQueryPlan; private generateQueryId; } export {}; //# sourceMappingURL=EnhancedFlatteningDetector.d.ts.map