UNPKG

@laiyon/create-wasapi

Version:

CLI to create WhatsApp bot projects with Wasapi and BuilderBot

65 lines (64 loc) 2.13 kB
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();