import { BaseService } from "./base-service"; import { ServiceStatus, HealthCheckResult } from "@/types"; export declare class DefaultService extends BaseService { } export interface ServiceConfig { schemaName: string; tableName: string; primaryKeyFields?: string[]; serviceClass?: new (schemaName: string, tableName: string) => BaseService; } export interface ServiceInfo { key: string; schemaName: string; tableName: string; status: ServiceStatus; isRegistered: boolean; createdAt: string; lastAccessed?: string; } export interface HealthReport { totalServices: number; healthyServices: number; unhealthyServices: number; services: Array; timestamp: string; overallHealth: boolean; } export interface ServiceManagerEvent { type: "SERVICE_CREATED" | "SERVICE_DESTROYED" | "SERVICE_ERROR" | "HEALTH_CHECK_COMPLETED"; serviceKey: string; schemaName: string; tableName: string; timestamp: string; data?: any; error?: Error; } export type ServiceManagerEventHandler = (event: ServiceManagerEvent) => void; /** * ServiceManager - Quản lý vòng đời các service con kế thừa từ BaseService * Không can thiệp vào DatabaseManager, chỉ tập trung quản lý service instances */ export declare class ServiceManager { private static instance; private services; private serviceConfigs; private serviceMetadata; private eventHandlers; private isShuttingDown; private cleanupInterval; private constructor(); /** * Singleton instance */ static getInstance(): ServiceManager; /** * Reset singleton (chủ yếu cho testing) */ static resetInstance(): void; private bindMethods; /** * Tạo service key duy nhất */ private createServiceKey; /** * Validate service config */ private validateServiceConfig; /** * Đăng ký cấu hình service */ registerService(config: ServiceConfig): this; /** * Đăng ký nhiều services */ registerServices(configs: ServiceConfig[]): this; /** * Tạo service instance từ config */ private createServiceInstance; /** * Lấy service (tự động tạo nếu chưa tồn tại) */ getService(schemaName: string, tableName: string): Promise; /** * Lấy service đã tồn tại (không tự động tạo) */ getExistingService(schemaName: string, tableName: string): BaseService | null; /** * Khởi tạo service */ initializeService(schemaName: string, tableName: string): Promise; /** * Hủy service instance */ destroyService(schemaName: string, tableName: string): Promise; /** * Lấy danh sách services theo schema */ getServicesBySchema(schemaName: string): BaseService[]; /** * Lấy danh sách service keys theo schema */ getServiceKeysBySchema(schemaName: string): string[]; /** * Hủy tất cả services trong một schema */ destroyServicesBySchema(schemaName: string): Promise; /** * Lấy thông tin tất cả services */ getAllServiceInfo(): ServiceInfo[]; /** * Kiểm tra sức khỏe tất cả services */ healthCheck(): Promise; /** * Thực hiện transaction trên nhiều services trong cùng schema * (Vì SQLite transaction chỉ hoạt động trong cùng database connection) */ executeSchemaTransaction(schemaName: string, callback: (services: BaseService[]) => Promise): Promise; /** * Periodic cleanup for unused services */ private startPeriodicCleanup; /** * Cleanup services not accessed for a long time */ private cleanupUnusedServices; /** * Event system */ on(eventType: string, handler: ServiceManagerEventHandler): this; off(eventType: string, handler: ServiceManagerEventHandler): this; private emit; /** * Utility methods */ hasService(schemaName: string, tableName: string): boolean; isRegistered(schemaName: string, tableName: string): boolean; getServiceCount(): number; getRegisteredCount(): number; getSchemas(): string[]; /** * Destroy all services and cleanup resources */ destroy(): Promise; } export declare const serviceManager: ServiceManager; //# sourceMappingURL=service-manager.d.ts.map