#!/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 - prioritize explicit DEV_DATABASE_URL // Falls back to DATABASE_URL, then .env.development const envPath = path.resolve(__dirname, '..', '.env.development'); if (fs.existsSync(envPath)) { require('dotenv').config({ path: envPath }); } // Use DEV_DATABASE_URL if set, otherwise use DATABASE_URL const databaseUrl = process.env.DEV_DATABASE_URL || process.env.DATABASE_URL; // Check if database URL is set if (!databaseUrl) { console.error('āŒ No database URL set'); console.error('Please set DEV_DATABASE_URL or DATABASE_URL environment variable'); console.error('Or ensure .env.development file exists with DATABASE_URL'); process.exit(1); } // Validate that we're using the dev database if (!databaseUrl.includes('_dev') && !databaseUrl.includes('_dev_')) { console.error('āŒ ERROR: This script should only be used with the development database!'); console.error(' Current URL:', databaseUrl); console.error(' Expected pattern: euchre_camp_dev'); console.error(' Please set DEV_DATABASE_URL for development database operations.'); process.exit(1); } // Extract database name from URL const dbUrl = databaseUrl; 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); }