From 30e16b5d094c5542db9a9ceb58f8de19682b8a3a Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Mon, 17 Mar 2025 01:55:36 +0530 Subject: [PATCH] Add database setup scripts and fix navigation --- apps/cli/src/helpers/auth-setup.ts | 28 +++++++++++++++++++ apps/cli/src/helpers/create-readme.ts | 6 ++-- apps/cli/src/helpers/post-installation.ts | 11 +++----- .../client/src/components/user-menu.tsx | 2 +- 4 files changed, 36 insertions(+), 11 deletions(-) diff --git a/apps/cli/src/helpers/auth-setup.ts b/apps/cli/src/helpers/auth-setup.ts index 4b00437..28d8566 100644 --- a/apps/cli/src/helpers/auth-setup.ts +++ b/apps/cli/src/helpers/auth-setup.ts @@ -127,6 +127,22 @@ ${options.orm === "prisma" ? 'DATABASE_URL="file:./dev.db"' : ""} ); await fs.writeFile(prismaAuthPath, authContent); } + + const packageJsonPath = path.join(projectDir, "package.json"); + if (await fs.pathExists(packageJsonPath)) { + const packageJson = await fs.readJson(packageJsonPath); + + packageJson.scripts["prisma:generate"] = + "cd packages/server && npx prisma generate"; + packageJson.scripts["prisma:push"] = + "cd packages/server && npx prisma db push"; + packageJson.scripts["prisma:studio"] = + "cd packages/server && npx prisma studio"; + packageJson.scripts["db:setup"] = + "npm run auth:generate && npm run prisma:generate && npm run prisma:push"; + + await fs.writeJson(packageJsonPath, packageJson, { spaces: 2 }); + } } else if (options.orm === "drizzle") { const drizzleAuthPath = path.join(serverDir, "src/lib/auth.ts"); const defaultDrizzleAuthPath = path.join( @@ -141,6 +157,18 @@ ${options.orm === "prisma" ? 'DATABASE_URL="file:./dev.db"' : ""} await fs.ensureDir(path.dirname(drizzleAuthPath)); await fs.copy(defaultDrizzleAuthPath, drizzleAuthPath); } + + const packageJsonPath = path.join(projectDir, "package.json"); + if (await fs.pathExists(packageJsonPath)) { + const packageJson = await fs.readJson(packageJsonPath); + + packageJson.scripts["db:push"] = + "cd packages/server && npx @better-auth/cli migrate"; + packageJson.scripts["db:setup"] = + "npm run auth:generate && npm run db:push"; + + await fs.writeJson(packageJsonPath, packageJson, { spaces: 2 }); + } } } } catch (error) { diff --git a/apps/cli/src/helpers/create-readme.ts b/apps/cli/src/helpers/create-readme.ts index 3a67a74..01a42a8 100644 --- a/apps/cli/src/helpers/create-readme.ts +++ b/apps/cli/src/helpers/create-readme.ts @@ -151,11 +151,11 @@ ${packageManagerRunCmd} auth:generate ? `Generate the Prisma client and push the schema: \`\`\`bash ${packageManagerRunCmd} prisma:generate -${packageManagerRunCmd} prisma:push +${packageManagerRunCmd} db:push \`\`\`` : `Apply the Drizzle migrations: \`\`\`bash -${packageManagerRunCmd} drizzle:migrate +${packageManagerRunCmd} db:push \`\`\`` } `; @@ -183,7 +183,7 @@ function generateScriptsList( if (orm === "prisma") { scripts += ` - \`${packageManagerRunCmd} prisma:generate\`: Generate Prisma client -- \`${packageManagerRunCmd} prisma:push\`: Push schema changes to database +- \`${packageManagerRunCmd} db:push\`: Push schema changes to database - \`${packageManagerRunCmd} prisma:studio\`: Open Prisma Studio`; } else if (orm === "drizzle") { scripts += ` diff --git a/apps/cli/src/helpers/post-installation.ts b/apps/cli/src/helpers/post-installation.ts index 1b03ed8..45b3aba 100644 --- a/apps/cli/src/helpers/post-installation.ts +++ b/apps/cli/src/helpers/post-installation.ts @@ -19,21 +19,18 @@ export function displayPostInstallInstructions( } if (hasAuth && database !== "none") { - steps.push(`${pc.yellow("Authentication Setup:")}`); - steps.push( - `${pc.cyan("1.")} Generate auth schema: ${pc.green(`${runCmd} auth:generate`)}`, - ); + steps.push(`${pc.yellow("Database Setup:")}`); if (orm === "prisma") { steps.push( - `${pc.cyan("2.")} Generate Prisma client: ${pc.green(`${runCmd} prisma:generate`)}`, + `${pc.cyan("1.")} Generate Prisma client: ${pc.green(`${runCmd} prisma:generate`)}`, ); steps.push( - `${pc.cyan("3.")} Push schema to database: ${pc.green(`${runCmd} prisma:push`)}`, + `${pc.cyan("2.")} Push schema to database: ${pc.green(`${runCmd} prisma:push`)}`, ); } else if (orm === "drizzle") { steps.push( - `${pc.cyan("2.")} Apply migrations: ${pc.green(`${runCmd} drizzle:migrate`)}`, + `${pc.cyan("1.")} Apply migrations: ${pc.green(`${runCmd} db:push`)}`, ); } } diff --git a/apps/cli/template/base/packages/client/src/components/user-menu.tsx b/apps/cli/template/base/packages/client/src/components/user-menu.tsx index 554c966..02388b7 100644 --- a/apps/cli/template/base/packages/client/src/components/user-menu.tsx +++ b/apps/cli/template/base/packages/client/src/components/user-menu.tsx @@ -43,7 +43,7 @@ export default function UserMenu() { className="w-full" onClick={() => { navigate({ - to: "/sign-in", + to: "/", }); }} >