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