UNPKG

iagate-querykit

Version:

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

163 lines 5.08 kB
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