iagate-querykit
Version:
QueryKit: lightweight TypeScript query toolkit with models, views, triggers, events, scheduler and adapters (better-sqlite3).
200 lines • 5.94 kB
TypeScript
import type { DatabaseExecutor, EventBus, SimulationController, MultiDbRegistry } from './types';
/**
* Configuração global do QueryKit que permite definir executors padrão,
* event bus, simuladores e configurações de múltiplos bancos de dados.
*
* @example
* ```typescript
* // Configurar executor padrão
* setDefaultExecutor(myDatabaseExecutor);
*
* // Configurar event bus para logging
* setEventBus(myEventBus);
*
* // Configurar simulador para testes
* setSimulationController(mySimulationController);
*
* // Configurar múltiplos bancos
* setMultiDbRegistry(myMultiDbRegistry);
* ```
*/
export declare const QueryKitConfig: {
defaultExecutor?: DatabaseExecutor;
eventBus?: EventBus;
simulation?: SimulationController;
multiDb?: MultiDbRegistry;
databaseName?: string;
defaultDialect?: 'sqlite' | 'mysql' | 'postgres' | 'mssql' | 'oracle';
tableToDatabase?: Record<string, string>;
executorResolver?: (tableName: string) => DatabaseExecutor | undefined;
};
/**
* Define o executor padrão para todas as queries do QueryKit.
*
* @param executor - Instância do DatabaseExecutor que será usado por padrão
*
* @example
* ```typescript
* // Dados iniciais
* const myExecutor = new SQLiteExecutor('database.db');
*
* // Como usar
* setDefaultExecutor(myExecutor);
*
* // Output: Executor padrão configurado para todas as queries
* ```
*/
export declare function setDefaultExecutor(executor: DatabaseExecutor): void;
/**
* Define o event bus para emissão de eventos do QueryKit.
*
* @param bus - Instância do EventBus para gerenciar eventos
*
* @example
* ```typescript
* // Dados iniciais
* const eventBus = new EventEmitter();
*
* // Como usar
* setEventBus(eventBus);
*
* // Output: Event bus configurado para emitir eventos de queries
* ```
*/
export declare function setEventBus(bus: EventBus): void;
/**
* Define o controlador de simulação para testes e desenvolvimento.
*
* @param sim - Instância do SimulationController para simular dados
*
* @example
* ```typescript
* // Dados iniciais
* const simController = new SimulationController();
*
* // Como usar
* setSimulationController(simController);
*
* // Output: Simulador configurado para queries de teste
* ```
*/
export declare function setSimulationController(sim: SimulationController): void;
/**
* Define o registro de múltiplos bancos de dados.
*
* @param reg - Instância do MultiDbRegistry para gerenciar múltiplos bancos
*
* @example
* ```typescript
* // Dados iniciais
* const multiDb = new MultiDbRegistry();
* multiDb.register('users', userDbExecutor);
* multiDb.register('products', productDbExecutor);
*
* // Como usar
* setMultiDbRegistry(multiDb);
*
* // Output: Múltiplos bancos configurados para queries distribuídas
* ```
*/
export declare function setMultiDbRegistry(reg: MultiDbRegistry): void;
/**
* Define o nome do banco de dados padrão.
*
* @param name - Nome do banco de dados padrão
*
* @example
* ```typescript
* // Dados iniciais
* const databaseName = 'main_database';
*
* // Como usar
* setDatabaseName(databaseName);
*
* // Output: Nome do banco padrão configurado
* ```
*/
export declare function setDatabaseName(name: string): void;
/**
* Define o dialeto SQL padrão para o QueryKit.
*
* @param dialect - Dialeto SQL padrão ('sqlite', 'mysql', 'postgres', 'mssql', 'oracle')
*
* @example
* ```typescript
* // Dados iniciais
* const dialect = 'postgres';
*
* // Como usar
* setDefaultDialect(dialect);
*
* // Output: Dialeto PostgreSQL configurado como padrão
* ```
*/
export declare function setDefaultDialect(dialect: 'sqlite' | 'mysql' | 'postgres' | 'mssql' | 'oracle'): void;
/**
* Define o mapeamento de tabelas para bancos de dados específicos.
*
* @param map - Objeto mapeando nomes de tabelas para nomes de bancos
*
* @example
* ```typescript
* // Dados iniciais
* const tableMap = {
* 'users': 'user_database',
* 'products': 'product_database',
* 'orders': 'order_database'
* };
*
* // Como usar
* setTableToDatabase(tableMap);
*
* // Output: Mapeamento configurado para queries em bancos específicos
* ```
*/
export declare function setTableToDatabase(map: Record<string, string>): void;
/**
* Define uma função resolver personalizada para encontrar executors por tabela.
*
* @param resolver - Função que recebe o nome da tabela e retorna o executor apropriado
*
* @example
* ```typescript
* // Dados iniciais
* const customResolver = (tableName: string) => {
* if (tableName.startsWith('user_')) return userDbExecutor;
* if (tableName.startsWith('product_')) return productDbExecutor;
* return defaultExecutor;
* };
*
* // Como usar
* setExecutorResolver(customResolver);
*
* // Output: Resolver personalizado configurado para seleção inteligente de executors
* ```
*/
export declare function setExecutorResolver(resolver: (tableName: string) => DatabaseExecutor | undefined): void;
/**
* Obtém o executor apropriado para uma tabela específica, considerando
* todas as configurações disponíveis (resolver personalizado, múltiplos bancos, etc.).
*
* @param tableName - Nome da tabela para qual se deseja o executor
* @param banksHint - Lista opcional de bancos para tentar primeiro
* @returns DatabaseExecutor apropriado para a tabela
* @throws Error se nenhum executor estiver configurado
*
* @example
* ```typescript
* // Dados iniciais
* setDefaultExecutor(defaultExecutor);
* setMultiDbRegistry(multiDbRegistry);
* setTableToDatabase({ 'users': 'user_db' });
*
* // Como usar
* const executor = getExecutorForTable('users', ['user_db', 'backup_db']);
*
* // Output: Executor do banco 'user_db' para a tabela 'users'
* ```
*/
export declare function getExecutorForTable(tableName: string, banksHint?: string[] | undefined): DatabaseExecutor;
//# sourceMappingURL=config.d.ts.map