@laiyon/create-wasapi
Version:
CLI to create WhatsApp bot projects with Wasapi and BuilderBot
65 lines (64 loc) • 2.13 kB
JavaScript
export class DatabaseProviderFactory {
/**
* Carga un provider de base de datos dinámicamente
* Solo carga el paquete cuando es necesario
*/
static async getProvider(dbType) {
// Verificar caché primero
if (this.providerCache.has(dbType)) {
return this.providerCache.get(dbType);
}
try {
let provider;
switch (dbType) {
case "mysql":
const { MySQLProvider } = await import("./providers/MySQLProvider.js");
provider = new MySQLProvider();
break;
case "postgresql":
const { PostgreSQLProvider } = await import("./providers/PostgreSQLProvider.js");
provider = new PostgreSQLProvider();
break;
case "mongodb":
const { MongoDBProvider } = await import("./providers/MongoDBProvider.js");
provider = new MongoDBProvider();
break;
default:
return null;
}
// Guardar en caché
this.providerCache.set(dbType, provider);
return provider;
}
catch (error) {
console.warn(`⚠️ Provider ${dbType} no disponible: ${error}`);
return null;
}
}
/**
* Obtiene la lista de providers disponibles
*/
static async getAvailableProviders() {
const available = [];
const providers = ["mysql", "postgresql", "mongodb"];
for (const provider of providers) {
try {
const instance = await this.getProvider(provider);
if (instance) {
available.push(provider);
}
}
catch {
// Provider no disponible, continuar
}
}
return available;
}
/**
* Limpia el caché de providers
*/
static clearCache() {
this.providerCache.clear();
}
}
DatabaseProviderFactory.providerCache = new Map();