/** * One-time migration: rename ecology fields to board across members and activity logs. * * Renames on Member documents: * communityEcology → board * privacy.communityEcology → privacy.board * onboarding.ecologyPageVisited → onboarding.boardPageVisited * * Renames on ActivityLog documents: * action: 'community_ecology_updated' → action: 'board_updated' * * Usage: node scripts/migrate-ecology-to-board.cjs */ require('dotenv').config() const mongoose = require('mongoose') async function main() { const uri = process.env.MONGODB_URI if (!uri) { console.error('MONGODB_URI is not set. Aborting.') process.exit(1) } await mongoose.connect(uri) console.log('Connected to MongoDB.') const Member = mongoose.connection.model( 'Member', new mongoose.Schema({}, { strict: false, collection: 'members' }), ) const ActivityLog = mongoose.connection.model( 'ActivityLog', new mongoose.Schema({}, { strict: false, collection: 'activitylogs' }), ) // --- Rename member fields --- const memberResult = await Member.updateMany( {}, { $rename: { communityEcology: 'board', 'privacy.communityEcology': 'privacy.board', 'onboarding.ecologyPageVisited': 'onboarding.boardPageVisited', }, }, { strict: false }, ) console.log( `Members updated: ${memberResult.modifiedCount} modified (${memberResult.matchedCount} matched).`, ) // --- Rename activity log action values --- const logResult = await ActivityLog.updateMany( { action: 'community_ecology_updated' }, { $set: { action: 'board_updated' } }, ) console.log( `Activity logs updated: ${logResult.modifiedCount} modified (${logResult.matchedCount} matched).`, ) await mongoose.disconnect() console.log('Done. Disconnected from MongoDB.') } main().catch((err) => { console.error(err) process.exit(1) })