/**
 * 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)
})
