@sqb/connect
Version:
Multi-dialect database connection framework written with TypeScript
38 lines (37 loc) • 1.13 kB
JavaScript
export class AdapterRegistry {
static adapters = [];
static get size() {
return this.adapters.length;
}
static register(...adapters) {
for (const adapter of adapters) {
if (!adapter.driver)
throw new TypeError('A DatabaseAdapter must contain "driver" property');
this.adapters.push(adapter);
}
}
static forEach(callback, thisArg) {
return this.adapters.forEach(callback, thisArg);
}
static items() {
return this.adapters.values();
}
static unRegister(...extensions) {
this.adapters = extensions.filter(x => !extensions.includes(x));
}
static getAll(dialect) {
return this.adapters.filter(x => x.dialect === dialect);
}
static get(index) {
return this.adapters[index];
}
static findDialect(dialect) {
return this.adapters.find(x => x.dialect === dialect);
}
static findDriver(dialect) {
return this.adapters.find(x => x.driver === dialect);
}
static has(extension) {
return !!this.adapters.find(x => x === extension);
}
}