@ahmedhegazee/nestjs-telescope
Version:
Advanced observability and monitoring solution for NestJS applications with ML-powered analytics, enterprise features, and production-ready scaling
58 lines (57 loc) • 1.69 kB
TypeScript
import { DataSource } from 'typeorm';
import { QueryWatcherService } from './query-watcher.service';
export interface QueryContext {
id: string;
sql: string;
parameters: any[];
startTime: number;
endTime?: number;
duration?: number;
connectionId?: string;
userId?: string;
sessionId?: string;
traceId?: string;
stack?: string;
operation: 'select' | 'insert' | 'update' | 'delete' | 'raw';
entityName?: string;
tableName?: string;
affectedRows?: number;
resultCount?: number;
error?: Error;
}
export interface ConnectionInfo {
id: string;
database: string;
host: string;
port: number;
username: string;
poolSize: number;
activeConnections: number;
idleConnections: number;
waitingConnections: number;
acquiredConnections: number;
}
export declare class QueryWatcherInterceptor {
private readonly queryWatcher;
private readonly dataSource;
private readonly logger;
private readonly originalMethods;
private queryCounter;
constructor(queryWatcher: QueryWatcherService, dataSource: DataSource);
setupInterception(): Promise<void>;
private interceptQueryRunner;
private interceptQueryBuilder;
private interceptRepository;
private interceptRepositoryMethods;
private createQueryContext;
private createQueryBuilderContext;
private createRepositoryContext;
private detectOperationType;
private mapRepositoryMethodToOperation;
private extractTableName;
private captureStack;
private generateQueryId;
private generateTraceId;
getConnectionInfo(): Promise<ConnectionInfo>;
cleanup(): Promise<void>;
}