#!/usr/bin/env node const fs = require('fs'); const path = require('path'); const { getConfig } = require('../config/config'); const { sequelize } = require('../models'); /** * Reset database and seed with comprehensive test data * Run with: NODE_ENV=development node backend/scripts/reset-and-seed.js */ const config = getConfig(); console.log('šŸ”„ Starting database reset and seed...\n'); console.log(`šŸ“ Database: ${config.dbFile}`); console.log(`šŸŒ Environment: ${config.environment}\n`); if (config.environment === 'production') { console.error( 'āŒ ERROR: Cannot run this script in production environment!' ); process.exit(1); } async function main() { try { // Step 1: Delete existing database file console.log('1ļøāƒ£ Removing existing database...'); if (fs.existsSync(config.dbFile)) { fs.unlinkSync(config.dbFile); console.log(' āœ… Database removed\n'); } else { console.log(' ā„¹ļø No existing database found\n'); } // Step 2: Reset database using sequelize.sync console.log('2ļøāƒ£ Creating fresh database...'); await sequelize.sync({ force: true }); console.log(' āœ… Database created\n'); // Step 3: Seed basic development data console.log('3ļøāƒ£ Seeding basic development data...'); const { seedDatabase } = require('../seeders/dev-seeder'); await seedDatabase(); console.log(' āœ… Basic data seeded\n'); // Step 4: Generate notifications console.log('4ļøāƒ£ Generating notifications...'); const { checkDueTasks } = require('../modules/tasks/dueTaskService'); const { checkDeferredTasks, } = require('../modules/tasks/deferredTaskService'); const { checkDueProjects, } = require('../modules/projects/dueProjectService'); const dueTasksResult = await checkDueTasks(); const deferredTasksResult = await checkDeferredTasks(); const dueProjectsResult = await checkDueProjects(); const total = dueTasksResult.notificationsCreated + deferredTasksResult.notificationsCreated + dueProjectsResult.notificationsCreated; console.log(` āœ… Generated ${total} notifications\n`); // Final summary console.log('āœ… Database reset and seed completed successfully!\n'); console.log('šŸ“Š Summary:'); console.log(' • Database: Fresh and ready'); console.log(' • Users: Test users created'); console.log(' • Tasks: Sample tasks with various due dates'); console.log(' • Projects: Sample projects with various due dates'); console.log(` • Notifications: ${total} notifications generated`); console.log('\nšŸš€ You can now start the application with:'); console.log(' npm start\n'); await sequelize.close(); process.exit(0); } catch (error) { console.error('āŒ Error:', error.message); console.error(error); await sequelize.close(); process.exit(1); } } // Run the main function main();