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