From 89a54248bcc36b6a9b83119ddf69815adf8c5aae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20Kadir=20Ak=C4=B1n?= Date: Tue, 6 Jan 2026 10:55:04 +0300 Subject: [PATCH] chore(scripts): update database setup in setup.js --- package.json | 2 +- scripts/setup.js | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 5c561d1a..22a3e6c7 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "db:studio": "prisma studio", "db:seed": "prisma db seed", "db:resetadmin": "npx tsx prisma/reset-admin.ts", - "db:setup": "prisma generate && prisma migrate dev && db:seed", + "db:setup": "prisma generate && prisma migrate dev && prisma db seed", "setup": "node scripts/setup.js", "generate:examples": "npx tsx scripts/generate-examples.ts", "postinstall": "prisma generate" diff --git a/scripts/setup.js b/scripts/setup.js index 2385baac..6bba0796 100644 --- a/scripts/setup.js +++ b/scripts/setup.js @@ -11,6 +11,7 @@ const fs = require('fs'); const path = require('path'); const crypto = require('crypto'); +const { execSync, spawn } = require('child_process'); const p = require('@clack/prompts'); const color = require('picocolors'); @@ -502,6 +503,46 @@ async function main() { s.stop('Created .env file'); + // === DATABASE SETUP === + const setupDb = await p.confirm({ + message: 'Create database and run migrations now?', + initialValue: true, + }); + + if (!p.isCancel(setupDb) && setupDb) { + // Create database + s.start(`Creating database "${config.env.database.database}"...`); + try { + const createDbCmd = `createdb -h ${config.env.database.host} -p ${config.env.database.port} -U ${config.env.database.username} ${config.env.database.database}`; + execSync(createDbCmd, { + stdio: 'pipe', + env: { ...process.env, PGPASSWORD: config.env.database.password } + }); + s.stop(`Created database "${config.env.database.database}"`); + } catch (err) { + if (err.message.includes('already exists')) { + s.stop(`Database "${config.env.database.database}" already exists`); + } else { + s.stop(color.yellow(`Could not create database (may already exist or createdb not available)`)); + p.log.warn(`You may need to create the database manually: createdb ${config.env.database.database}`); + } + } + + // Run db:setup (generate + migrate + seed) + s.start('Running database setup (prisma generate + migrate)...'); + try { + execSync('npm run db:setup', { + stdio: 'inherit', + cwd: path.join(__dirname, '..'), + env: { ...process.env, DATABASE_URL: config.env.databaseUrl } + }); + s.stop('Database setup complete'); + } catch (err) { + s.stop(color.red('Database setup failed')); + p.log.error('Run manually: npm run db:setup'); + } + } + // === ADDITIONAL ENV VARS NEEDED === const additionalEnvVars = [];