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
JavaScript
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;
}