UNPKG

nuxt-users

Version:

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

64 lines (63 loc) 2.38 kB
import { useDb } from "./db.js"; import { createUsersTable } from "./create-users-table.js"; import { createPersonalAccessTokensTable } from "./create-personal-access-tokens-table.js"; import { createPasswordResetTokensTable } from "./create-password-reset-tokens-table.js"; import { createMigrationsTable } from "./create-migrations-table.js"; const migrations = [ { name: "create_migrations_table", run: createMigrationsTable }, { name: "create_users_table", run: createUsersTable }, { name: "create_personal_access_tokens_table", run: createPersonalAccessTokensTable }, { name: "create_password_reset_tokens_table", run: createPasswordResetTokensTable } ]; export const getAppliedMigrations = async (options) => { const db = await useDb(options); try { const result = await db.sql`SELECT name FROM migrations ORDER BY id`; return result.rows.map((row) => row.name); } catch { return []; } }; export const markMigrationAsApplied = async (options, migrationName) => { const db = await useDb(options); await db.sql`INSERT INTO migrations (name) VALUES (${migrationName})`; }; export const runMigrations = async (options) => { console.log("[Nuxt Users] Starting migration system..."); await createMigrationsTable(options); const appliedMigrations = await getAppliedMigrations(options); console.log(`[Nuxt Users] Applied migrations: ${appliedMigrations.join(", ")}`); const pendingMigrations = migrations.filter((migration) => !appliedMigrations.includes(migration.name)); if (pendingMigrations.length === 0) { console.log("[Nuxt Users] No pending migrations to run."); return; } console.log(`[Nuxt Users] Found ${pendingMigrations.length} pending migrations:`); pendingMigrations.forEach((migration) => { console.log(`[Nuxt Users] - ${migration.name}`); }); for (const migration of pendingMigrations) { console.log(`[Nuxt Users] Running migration: ${migration.name}`); try { await migration.run(options); await markMigrationAsApplied(options, migration.name); console.log(`[Nuxt Users] \u2713 Migration ${migration.name} successfull \u2705`); } catch (error) { console.error(`[Nuxt Users] \u2717 Migration ${migration.name} failed:`, error); throw error; } } console.log("[Nuxt Users] All migrations successfull \u2705"); };