cyber-mysql-openai
Version:
Intelligent natural language to SQL translator with self-correction capabilities using OpenAI and MySQL
92 lines (91 loc) • 2.27 kB
TypeScript
/**
* Sistema de cache en memoria para consultas SQL
* Optimiza el rendimiento almacenando resultados de consultas frecuentes
*/
export interface CacheEntry {
sql: string;
results: any[];
naturalResponse: string;
timestamp: number;
ttl: number;
language: string;
executionTime: number;
}
export interface CacheStats {
totalEntries: number;
hits: number;
misses: number;
hitRate: number;
memoryUsage: number;
oldestEntry: number;
newestEntry: number;
}
export declare class MemoryCache {
private static instance;
private cache;
private stats;
private maxSize;
private cleanupInterval;
private enabled;
private constructor();
/**
* Obtiene la instancia singleton del cache
*/
static getInstance(maxSize?: number, cleanupIntervalMs?: number): MemoryCache;
/**
* Genera una clave de cache normalizada
*/
private generateKey;
/**
* Genera un hash simple para strings
*/
private hashString;
/**
* Determina el TTL basado en el tipo de consulta SQL
*/
private getTTLByQueryType;
/**
* Obtiene una entrada del cache
*/
get(prompt: string, language: string, schemaHash: string): CacheEntry | null;
/**
* Almacena una entrada en el cache
*/
set(prompt: string, language: string, schemaHash: string, sql: string, results: any[], naturalResponse: string, executionTime: number): void;
/**
* Elimina las entradas más antiguas cuando el cache está lleno
*/
private evictOldest;
/**
* Limpia entradas expiradas
*/
private cleanup;
/**
* Invalida entradas relacionadas con una tabla específica
*/
invalidateByTable(tableName: string): number;
/**
* Obtiene estadísticas del cache
*/
getStats(): CacheStats;
/**
* Estima el uso de memoria del cache
*/
private estimateMemoryUsage;
/**
* Limpia todo el cache
*/
clear(): void;
/**
* Habilita o deshabilita el cache
*/
setEnabled(enabled: boolean): void;
/**
* Verifica si el cache está habilitado
*/
isEnabled(): boolean;
/**
* Limpia los recursos del cache
*/
destroy(): void;
}