UNPKG

nuxt-users

Version:

A comprehensive user management module for Nuxt 3 and Nuxt 4 applications with authentication, authorization, database support, and CLI tools

47 lines (46 loc) 1.57 kB
import { createDatabase } from "db0"; export const getConnector = async (name) => { try { switch (name) { case "mysql": return (await import("db0/connectors/mysql2")).default; case "postgresql": return (await import("db0/connectors/postgresql")).default; case "sqlite": return (await import("db0/connectors/better-sqlite3")).default; default: throw new Error(`Unsupported database connector: ${name}`); } } catch (error) { if (error instanceof Error && error.message.includes("Cannot resolve")) { throw new Error(`Database connector "${name}" not found. Please install the required peer dependency: - For sqlite: yarn add better-sqlite3 - For mysql: yarn add mysql2 - For postgresql: yarn add pg`); } throw error; } }; export const useDb = async (options) => { const connectorName = options.connector.name; const connector = await getConnector(connectorName); const connectorOptions = { ...options.connector.options }; if (connectorName !== "sqlite") { delete connectorOptions.path; } try { return createDatabase(connector(connectorOptions)); } catch (error) { console.warn(`[Nuxt Users] \u26A0\uFE0F Failed to connect to ${connectorName} database:`, error instanceof Error ? error.message : "Unknown error"); throw error; } }; export const checkTableExists = async (options, tableName) => { try { const db = await useDb(options); await db.sql`SELECT 1 FROM {${tableName}} LIMIT 1`; return true; } catch { return false; } };