iagate-querykit
Version:
QueryKit: lightweight TypeScript query toolkit with models, views, triggers, events, scheduler and adapters (better-sqlite3).
163 lines • 5.08 kB
TypeScript
import type { QueryBuilder } from './query-builder';
/**
* Gerenciador de simulação para o QueryKit.
* Permite executar queries em dados simulados sem afetar o banco real.
* Implementa o padrão Singleton para acesso global.
*
* @example
* ```typescript
* // Dados iniciais
* const simulationManager = SimulationManager.getInstance();
* const mockData = {
* users: [{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }],
* products: [{ id: 1, name: 'Product A', price: 100 }]
* };
*
* // Como usar
* await simulationManager.start(mockData);
* const users = simulationManager.getStateFor('users');
*
* // Output: Simulação ativa com dados mock carregados
* ```
*/
declare class SimulationManager {
private static instance;
private active;
private virtualState;
private constructor();
/**
* Obtém a instância única do SimulationManager (Singleton).
* Cria uma nova instância se não existir.
*
* @returns Instância única do SimulationManager
*
* @example
* ```typescript
* // Dados iniciais
* // Nenhum - método estático
*
* // Como usar
* const manager = SimulationManager.getInstance();
*
* // Output: Instância única do gerenciador de simulação
* ```
*/
static getInstance(): SimulationManager;
/**
* Verifica se a simulação está ativa.
* Prioriza configuração global se disponível.
*
* @returns true se a simulação estiver ativa, false caso contrário
*
* @example
* ```typescript
* // Dados iniciais
* const simulationManager = SimulationManager.getInstance();
*
* // Como usar
* const isActive = simulationManager.isActive();
*
* // Output: true se simulação estiver ativa
* ```
*/
isActive(): boolean;
/**
* Inicia a simulação com estado inicial.
* Aceita dados diretos ou QueryBuilders para carregar dados do banco.
*
* @param initialState - Estado inicial das tabelas (dados ou queries)
* @returns Promise que resolve quando a simulação for iniciada
*
* @example
* ```typescript
* // Dados iniciais
* const simulationManager = SimulationManager.getInstance();
* const initialState = {
* users: [{ id: 1, name: 'John' }],
* products: table('products').select('*').where('active', true)
* };
*
* // Como usar
* await simulationManager.start(initialState);
*
* // Output: Simulação iniciada com dados mock e dados do banco
* ```
*/
start(initialState: Record<string, any[] | QueryBuilder<any>>): Promise<void>;
/**
* Para a simulação e limpa o estado virtual.
* Restaura o comportamento normal do banco de dados.
*
* @example
* ```typescript
* // Dados iniciais
* const simulationManager = SimulationManager.getInstance();
* await simulationManager.start({ users: [] });
*
* // Como usar
* simulationManager.stop();
*
* // Output: Simulação parada e estado virtual limpo
* ```
*/
stop(): void;
/**
* Obtém o estado atual de uma tabela na simulação.
* Retorna dados simulados se disponíveis.
*
* @param tableName - Nome da tabela para obter estado
* @returns Array com dados da tabela ou undefined se não existir
*
* @example
* ```typescript
* // Dados iniciais
* const simulationManager = SimulationManager.getInstance();
* await simulationManager.start({ users: [{ id: 1, name: 'John' }] });
*
* // Como usar
* const users = simulationManager.getStateFor('users');
*
* // Output: [{ id: 1, name: 'John' }]
* ```
*/
getStateFor(tableName: string): any[] | undefined;
/**
* Atualiza o estado de uma tabela na simulação.
* Só funciona se a simulação estiver ativa.
*
* @param tableName - Nome da tabela para atualizar
* @param data - Novos dados para a tabela
*
* @example
* ```typescript
* // Dados iniciais
* const simulationManager = SimulationManager.getInstance();
* await simulationManager.start({ users: [] });
*
* // Como usar
* simulationManager.updateStateFor('users', [{ id: 1, name: 'New User' }]);
*
* // Output: Estado da tabela 'users' atualizado na simulação
* ```
*/
updateStateFor(tableName: string, data: any[]): void;
}
/**
* Instância global do SimulationManager para uso em todo o QueryKit.
* Permite ativar/desativar simulação de forma centralizada.
*
* @example
* ```typescript
* // Dados iniciais
* import { simulationManager } from './simulation-manager';
*
* // Como usar
* await simulationManager.start({ users: [{ id: 1, name: 'Test User' }] });
* const isSimulating = simulationManager.isActive();
*
* // Output: Simulação ativa com dados de teste
* ```
*/
export declare const simulationManager: SimulationManager;
export {};
//# sourceMappingURL=simulation-manager.d.ts.map