docs: add development database and testing documentation
This commit is contained in:
Executable
+65
@@ -0,0 +1,65 @@
|
||||
#!/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);
|
||||
}
|
||||
Reference in New Issue
Block a user