diff --git a/apps/api/src/db/migrate.ts b/apps/api/src/db/migrate.ts new file mode 100644 index 0000000..0016786 --- /dev/null +++ b/apps/api/src/db/migrate.ts @@ -0,0 +1,39 @@ +import { migrate } from "drizzle-orm/node-postgres/migrator" +import { db } from "./index" +import { users } from "./schema" +import * as argon2 from "argon2" + +async function runMigration() { + try { + console.log("Running migrations...") + await migrate(db, { migrationsFolder: "./drizzle" }) + console.log("Migrations completed successfully") + + console.log("Checking for admin user...") + const existingAdmin = await db.query.users.findFirst({ + where: (users, { eq }) => eq(users.email, "admin@emberclone.local") + }) + + if (!existingAdmin) { + console.log("Creating default admin user...") + const passwordHash = await argon2.hash("emberclone2026") + + await db.insert(users).values({ + email: "admin@emberclone.local", + passwordHash, + name: "Admin", + role: "admin" + }) + console.log("Default admin user created: admin@emberclone.local") + } else { + console.log("Admin user already exists") + } + + process.exit(0) + } catch (error) { + console.error("Migration failed:", error) + process.exit(1) + } +} + +runMigration() \ No newline at end of file