UNPKG

iagate-querykit

Version:

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

39 lines (38 loc) 1.57 kB
export const QueryKitConfig = {}; export function setDefaultExecutor(executor) { QueryKitConfig.defaultExecutor = executor; } export function setEventBus(bus) { QueryKitConfig.eventBus = bus; } export function setSimulationController(sim) { QueryKitConfig.simulation = sim; } export function setMultiDbRegistry(reg) { QueryKitConfig.multiDb = reg; } export function setDatabaseName(name) { QueryKitConfig.databaseName = name; } export function setDefaultDialect(dialect) { QueryKitConfig.defaultDialect = dialect; } export function setTableToDatabase(map) { QueryKitConfig.tableToDatabase = map; } export function setExecutorResolver(resolver) { QueryKitConfig.executorResolver = resolver; } export function getExecutorForTable(tableName, banksHint) { const cfg = QueryKitConfig; if (cfg.executorResolver) { const ex = cfg.executorResolver(tableName); if (ex) return ex; } if (banksHint && cfg.multiDb) { for (const db of banksHint) { try { const ex = cfg.multiDb.getAdapter(db); if (ex) return ex; } catch { } } } if (cfg.tableToDatabase && cfg.multiDb) { const db = cfg.tableToDatabase[tableName]; if (db) return cfg.multiDb.getAdapter(db); } if (cfg.multiDb && cfg.databaseName) { return cfg.multiDb.getAdapter(cfg.databaseName); } if (!cfg.defaultExecutor) throw new Error('No executor configured for QueryKit'); return cfg.defaultExecutor; }