UNPKG

plugin-postgresql-connector

Version:

NocoBase plugin for connecting to external PostgreSQL databases

96 lines 3.37 kB
import { PoolClient } from 'pg'; import { ConnectionManager } from './ConnectionManager'; export interface QueryResult { rows: any[]; rowCount: number; fields?: Array<{ name: string; dataTypeID: number; dataTypeSize: number; dataTypeName?: string; }>; executionTime: number; query: string; formattedQuery?: string; } export interface QueryParameter { name: string; value: any; type?: string; } export interface QueryOptions { timeout?: number; maxRows?: number; formatQuery?: boolean; includeMetadata?: boolean; } export interface SchemaInfo { tables: Array<{ table_name: string; table_type: string; table_schema: string; }>; views: Array<{ view_name: string; view_definition?: string; table_schema: string; }>; functions: Array<{ function_name: string; routine_type: string; data_type?: string; routine_definition?: string; }>; procedures: Array<{ procedure_name: string; routine_type: string; routine_definition?: string; }>; } export declare abstract class QueryStrategy { abstract execute(client: PoolClient, query: string, params: any[], options: QueryOptions): Promise<QueryResult>; protected getDataTypeName(dataTypeID: number): string; protected formatExecutionTime(startTime: number): number; } export declare class SelectQueryStrategy extends QueryStrategy { execute(client: PoolClient, query: string, params?: any[], options?: QueryOptions): Promise<QueryResult>; } export declare class ModifyQueryStrategy extends QueryStrategy { execute(client: PoolClient, query: string, params?: any[], options?: QueryOptions): Promise<QueryResult>; } export declare class ProcedureQueryStrategy extends QueryStrategy { execute(client: PoolClient, query: string, params?: any[], options?: QueryOptions): Promise<QueryResult>; } export declare class QueryExecutor { private connectionManager; private queryCache; private readonly cacheTTL; constructor(connectionManager: ConnectionManager); executeQuery(connectionId: string, query: string, params?: any[], options?: QueryOptions): Promise<QueryResult>; executeProcedure(connectionId: string, procedureName: string, params?: any[], options?: QueryOptions): Promise<QueryResult>; executeFunction(connectionId: string, functionName: string, params?: any[], options?: QueryOptions): Promise<QueryResult>; getViewData(connectionId: string, viewName: string, limit?: number, options?: QueryOptions): Promise<QueryResult>; getTableData(connectionId: string, tableName: string, limit?: number, offset?: number, orderBy?: string, options?: QueryOptions): Promise<QueryResult>; private validateAndCleanQuery; private detectQueryType; private getDataTypeName; private shouldUseCache; private getCachedResult; private cacheResult; private generateCacheKey; private cleanupCache; /** * Get query execution statistics */ getStatistics(): object; /** * Clear query cache */ clearCache(): void; /** * Analyze query complexity (basic implementation) */ analyzeQuery(query: string): object; } export default QueryExecutor; //# sourceMappingURL=QueryExecutor.d.ts.map