#!/usr/bin/env tsx /** * Database reset script * Clears all collections and optionally reseeds data */ import { connectDB } from '../lib/mongodb' import { User } from '../models/user' import mongoose from 'mongoose' import { seedDatabase } from './seed' import readline from 'readline' const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }) function askQuestion(question: string): Promise { return new Promise((resolve) => { rl.question(question, (answer) => { resolve(answer.trim().toLowerCase()) }) }) } async function clearCollections() { console.log('๐Ÿงน Clearing collections...') // Get all collections const collections = await mongoose.connection.db.collections() for (const collection of collections) { const count = await collection.countDocuments() if (count > 0) { await collection.deleteMany({}) console.log(` โœ… Cleared ${collection.collectionName}: ${count} documents removed`) } else { console.log(` โญ๏ธ ${collection.collectionName}: already empty`) } } } async function main() { try { console.log('๐Ÿ”„ Database Reset Tool') console.log('=====================') // Connect to database await connectDB() console.log('๐Ÿ“ฆ Connected to MongoDB') // Get current database name const dbName = mongoose.connection.db.databaseName console.log(`๐Ÿ—„๏ธ Database: ${dbName}`) // Confirm reset console.log('\nโš ๏ธ This will permanently delete ALL data in the database!') const confirmed = await askQuestion('Are you sure you want to continue? (yes/no): ') if (confirmed !== 'yes' && confirmed !== 'y') { console.log('โŒ Reset cancelled') return } // Clear all collections await clearCollections() // Ask if user wants to reseed const reseed = await askQuestion('\n๐ŸŒฑ Do you want to seed sample data? (yes/no): ') if (reseed === 'yes' || reseed === 'y') { console.log('\n๐ŸŒฑ Reseeding database...') await seedDatabase() } console.log('\n๐ŸŽ‰ Database reset completed successfully!') } catch (error) { console.error('โŒ Error resetting database:', error) process.exit(1) } finally { rl.close() // Close database connection await mongoose.connection.close() console.log('๐Ÿ”Œ Database connection closed') process.exit(0) } } // Handle uncaught errors process.on('unhandledRejection', (error) => { console.error('โŒ Unhandled rejection:', error) process.exit(1) }) process.on('uncaughtException', (error) => { console.error('โŒ Uncaught exception:', error) process.exit(1) }) // Run the reset tool if (require.main === module) { main() }