UNPKG

iagate-querykit

Version:

QueryKit: lightweight TypeScript query toolkit with models, views, triggers, events, scheduler and adapters (better-sqlite3).

154 lines 5.17 kB
import { BaseDatabaseAdapter, type DatabaseConfig, type QueryResult } from './database-adapters/base-adapter'; /** * Configuração para múltiplos bancos de dados. * Define qual banco é o padrão e as configurações de cada banco individual. * * @example * ```typescript * // Dados iniciais * const multiDbConfig: MultiDatabaseConfig = { * defaultDatabase: 'main', * databases: { * main: { host: 'localhost', port: 5432, database: 'main_db' }, * analytics: { host: 'analytics-server', port: 5432, database: 'analytics_db' } * } * }; * * // Como usar * const manager = MultiDatabaseManager.getInstance(multiDbConfig); * * // Output: Gerenciador de múltiplos bancos configurado * ``` */ export interface MultiDatabaseConfig { /** Nome do banco de dados padrão */ defaultDatabase: string; /** Configurações de cada banco de dados */ databases: Record<string, DatabaseConfig>; } /** * Gerenciador de múltiplos bancos de dados usando o padrão Singleton. * Permite executar queries em diferentes bancos simultaneamente e * gerenciar conexões de forma centralizada. * * @example * ```typescript * // Dados iniciais * const config: MultiDatabaseConfig = { * defaultDatabase: 'users', * databases: { * users: { host: 'localhost', database: 'users_db' }, * products: { host: 'localhost', database: 'products_db' } * } * }; * * // Como usar * const manager = MultiDatabaseManager.getInstance(config); * await manager.initialize(createPostgresAdapter); * * // Output: Gerenciador inicializado com adapters conectados * ``` */ export declare class MultiDatabaseManager { private static instance; private adapters; private config; private constructor(); /** * Obtém a instância única do MultiDatabaseManager (Singleton). * Se config for fornecido e não houver instância, cria uma nova. * * @param config - Configuração opcional para múltiplos bancos * @returns Instância única do MultiDatabaseManager * * @example * ```typescript * // Dados iniciais * const config: MultiDatabaseConfig = { ... }; * * // Como usar * const manager = MultiDatabaseManager.getInstance(config); * * // Output: Instância única do gerenciador obtida * ``` */ static getInstance(config?: MultiDatabaseConfig): MultiDatabaseManager; /** * Inicializa todos os adapters de banco de dados configurados. * Cria e conecta cada adapter usando a função factory fornecida. * * @param createAdapter - Função factory para criar adapters * @returns Promise que resolve quando todos os adapters estiverem conectados * * @example * ```typescript * // Dados iniciais * const createPostgresAdapter = (config: DatabaseConfig) => new PostgresAdapter(config); * * // Como usar * await manager.initialize(createPostgresAdapter); * * // Output: Todos os adapters inicializados e conectados * ``` */ initialize(createAdapter: (config: DatabaseConfig) => BaseDatabaseAdapter): Promise<void>; /** * Obtém um adapter específico pelo nome. * * @param name - Nome do banco de dados * @returns Adapter do banco especificado * @throws Error se o adapter não for encontrado * * @example * ```typescript * // Dados iniciais * const manager = MultiDatabaseManager.getInstance(config); * * // Como usar * const userAdapter = manager.getAdapter('users'); * * // Output: Adapter do banco 'users' obtido com sucesso * ``` */ getAdapter(name: string): BaseDatabaseAdapter; /** * Obtém o adapter padrão configurado. * * @returns Adapter do banco padrão * * @example * ```typescript * // Dados iniciais * const manager = MultiDatabaseManager.getInstance(config); * * // Como usar * const defaultAdapter = manager.getDefaultAdapter(); * * // Output: Adapter padrão obtido (ex: 'users') * ``` */ getDefaultAdapter(): BaseDatabaseAdapter; /** * Executa uma query em múltiplos bancos de dados simultaneamente. * Útil para operações que precisam ser replicadas em vários bancos. * * @param databaseNames - Lista de nomes dos bancos onde executar a query * @param query - Query SQL a ser executada * @param params - Parâmetros opcionais para a query * @returns Objeto com resultados de cada banco, indexado pelo nome * * @example * ```typescript * // Dados iniciais * const manager = MultiDatabaseManager.getInstance(config); * const query = 'SELECT COUNT(*) as total FROM users'; * * // Como usar * const results = await manager.executeOnMultiple(['users', 'analytics'], query); * * // Output: { users: { data: [{ total: 150 }] }, analytics: { data: [{ total: 150 }] } } * ``` */ executeOnMultiple(databaseNames: string[], query: string, params?: any[]): Promise<Record<string, QueryResult>>; } //# sourceMappingURL=database-manager.d.ts.map