/** * PostgreSQL Adapter Interfaces * SOLID Principles: Interface Segregation */ import { Pool } from 'pg'; import { DatabaseConfig, Project, ProjectPath, DatabaseStats } from './base'; import { InitializationProgress, DetectedPattern, QuestionnaireResponse, AnalysisResult } from '../../core/types'; export interface IConnectionManager { initialize(config: DatabaseConfig): Promise; close(): Promise; migrate(): Promise; isHealthy(): Promise; getPool(): Pool; } export interface IProjectService { createProject(projectData: Omit): Promise; getProject(projectPath: string): Promise; getProjectById(id: string): Promise; updateProject(id: string, updates: Partial): Promise; deleteProject(id: string): Promise; listProjects(status?: string, limit?: number, offset?: number): Promise; } export interface IProjectPathService { addProjectPath(projectId: string, path: string, pathType: 'primary' | 'alias' | 'historical'): Promise; updateProjectPath(projectId: string, oldPath: string, newPath: string): Promise; deactivateProjectPath(projectId: string, path: string): Promise; getProjectByAnyPath(path: string): Promise; getProjectPaths(projectId: string): Promise; } export interface IInitializationService { saveInitializationProgress(progress: Omit): Promise; getInitializationProgress(projectPath: string): Promise; updateInitializationProgress(resumeToken: string, updates: Partial): Promise; cleanupExpiredResumeStates(): Promise; } export interface IPatternService { saveDetectedPattern(pattern: Omit): Promise; getDetectedPatterns(projectPath: string, patternType?: string): Promise; updatePatternStatus(id: string, status: 'detected' | 'validated' | 'rejected'): Promise; } export interface IQuestionnaireService { saveQuestionnaireResponse(response: Omit): Promise; getQuestionnaireResponses(projectPath: string, category?: string): Promise; } export interface IAnalysisService { saveAnalysisResult(analysisResult: Omit): Promise; getAnalysisResults(projectPath: string, analysisType?: string, fileHash?: string): Promise; archiveOldAnalysisResults(olderThanDays: number): Promise; } export interface IConfigService { getSystemConfig(key: string): Promise; setSystemConfig(key: string, value: any, projectId?: string): Promise; } export interface IMetricsService { getDatabaseStats(): Promise; recordOperationMetrics(operation: string, projectId: string | null, durationMs: number, success: boolean, error?: string, metadata?: Record): Promise; } export interface IDatabaseQuery { query(sql: string, params?: any[]): Promise<{ rows: any[]; rowCount: number; }>; } //# sourceMappingURL=interfaces.d.ts.map