66 lines
1.9 KiB
JavaScript
Executable File
66 lines
1.9 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
/**
|
|
* Reset Development Database
|
|
*
|
|
* Drops and recreates the development database with a clean state.
|
|
* Useful for development and testing.
|
|
*/
|
|
|
|
const { execSync } = require('child_process');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
// Load environment variables
|
|
const envPath = path.resolve(__dirname, '..', '.env.development');
|
|
if (fs.existsSync(envPath)) {
|
|
require('dotenv').config({ path: envPath });
|
|
}
|
|
|
|
// Check if DATABASE_URL is set
|
|
if (!process.env.DATABASE_URL) {
|
|
console.error('❌ DATABASE_URL is not set');
|
|
console.error('Please set it in .env.development');
|
|
process.exit(1);
|
|
}
|
|
|
|
// Extract database name from URL
|
|
const dbUrl = process.env.DATABASE_URL;
|
|
const dbName = dbUrl.split('/').pop();
|
|
|
|
console.log('🔄 Resetting development database...\n');
|
|
console.log(`Database: ${dbName}`);
|
|
console.log(`URL: ${dbUrl}\n`);
|
|
|
|
try {
|
|
// Drop existing connections
|
|
console.log('Dropping existing connections...');
|
|
execSync(
|
|
`psql "${dbUrl}" -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '${dbName}' AND pid <> pg_backend_pid();" 2>/dev/null || true`,
|
|
{ stdio: 'pipe' }
|
|
);
|
|
|
|
// Drop the database
|
|
console.log('Dropping database...');
|
|
execSync(
|
|
`psql "${dbUrl}" -c "DROP DATABASE IF EXISTS ${dbName};" 2>/dev/null || true`,
|
|
{ stdio: 'pipe' }
|
|
);
|
|
|
|
// Recreate the database
|
|
console.log('Creating database...');
|
|
execSync(`psql "${dbUrl}" -c "CREATE DATABASE ${dbName};"`, { stdio: 'pipe' });
|
|
|
|
// Run migrations
|
|
console.log('Running migrations...');
|
|
execSync('npx prisma migrate deploy', { stdio: 'inherit' });
|
|
|
|
console.log('\n✅ Development database reset successfully!');
|
|
console.log('\nNext steps:');
|
|
console.log('1. Seed the database (optional): npm run db:seed');
|
|
console.log('2. Start development server: npm run dev');
|
|
} catch (error) {
|
|
console.error('\n❌ Failed to reset database:', error.message);
|
|
process.exit(1);
|
|
}
|