UNPKG

@simonecoelhosfo/optimizely-mcp-server

Version:

Optimizely MCP Server for AI assistants with integrated CLI tools

120 lines 3.59 kB
/** * IntelligentFieldMapper - Handles complex cross-table field resolution for the Dynamic JSON Query Engine * * This class solves the fundamental problem of mapping logical fields like "flags.environment" * to actual database schema with proper JOINs and field references. */ import { QueryFilter, EntityType } from './types.js'; export interface FieldMapping { /** Resolved SQL field reference (e.g., "flag_environments.environment_key") */ sqlField: string; /** Required JOIN to access this field */ requiredJoin?: string; /** Whether this field needs special JSON processing */ requiresJsonProcessing?: boolean; /** JSONata expression for complex access */ jsonataPath?: string; /** Additional WHERE conditions needed */ additionalConditions?: string[]; } export interface JoinRequirement { /** Alias for the joined table */ alias: string; /** Actual table name */ table: string; /** JOIN condition */ condition: string; /** JOIN type (LEFT, INNER, etc.) */ type: 'LEFT' | 'INNER' | 'RIGHT'; } export declare class IntelligentFieldMapper { private schemaMap; constructor(); /** * Resolve a logical field reference to actual database structure */ resolveField(fieldPath: string, primaryEntity: EntityType, context?: { filters?: QueryFilter[]; }): FieldMapping; /** * Get all required JOINs for a set of field mappings */ getRequiredJoins(mappings: FieldMapping[]): JoinRequirement[]; /** * Resolve direct field on primary table */ private resolveDirectField; /** * Resolve cross-table field references (e.g., flags.environment) */ private resolveCrossTableField; /** * Resolve nested field within primary entity's JSON data */ private resolveNestedField; /** * Resolve audience-related field references */ private resolveAudienceRelation; /** * Resolve variation-related field references */ private resolveVariationRelation; /** * Resolve metrics-related field references */ private resolveMetricsRelation; /** * Resolve pages-related field references */ private resolvePagesRelation; /** * Resolve events-related field references */ private resolveEventsRelation; /** * Resolve rules-related field references */ private resolveRulesRelation; /** * Resolve environments-related field references */ private resolveEnvironmentsRelation; /** * Resolve attributes-related field references */ private resolveAttributesRelation; /** * Resolve variables-related field references */ private resolveVariablesRelation; /** * Resolve changes-related field references (array field in experiments/campaigns) */ private resolveChangesRelation; /** * Resolve whitelist-related field references */ private resolveWhitelistRelation; /** * Resolve fields-related field references (extension fields) */ private resolveFieldsRelation; /** * Resolve generic entity relationships */ private resolveGenericRelation; /** * Get JOIN definition for a required join */ private getJoinDefinition; /** * Apply field name mappings for common aliases */ private applyFieldMappings; /** * Initialize the schema map with current database structure */ private initializeSchemaMap; } //# sourceMappingURL=IntelligentFieldMapper-INCOMPLETE.d.ts.map