chore(scripts): update database setup in setup.js

This commit is contained in:
Fatih Kadir Akın
2026-01-06 10:55:04 +03:00
parent 9296d2c2f6
commit 89a54248bc
2 changed files with 42 additions and 1 deletions

View File

@@ -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"

View File

@@ -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 = [];