/** * One-off: set joinCode on all sessions and tracks (same algorithm as eventBuzzCode util). * Run: cd backend && npm run backfill:join-codes */ const path = require('path'); require('dotenv').config({ path: path.join(__dirname, '..', '.env') }); const mongoose = require('mongoose'); const Session = require(path.join(__dirname, '..', 'src', 'models', 'Session')); const Track = require(path.join(__dirname, '..', 'src', 'models', 'Track')); const { eventBuzzCodeFor } = require(path.join(__dirname, '..', 'src', 'utils', 'eventBuzzCode')); async function run() { const uri = process.env.MONGODB_URI; if (!uri) { console.error('MONGODB_URI is not set'); process.exit(1); } await mongoose.connect(uri); const sessions = await Session.find({}).select('_id').lean(); let ns = 0; for (const s of sessions) { const jc = eventBuzzCodeFor(s._id.toString(), 'session'); await Session.updateOne({ _id: s._id }, { $set: { joinCode: jc } }); ns += 1; } console.log(`Backfilled joinCode for ${ns} session(s).`); const tracks = await Track.find({}).select('_id').lean(); let nt = 0; for (const t of tracks) { const jc = eventBuzzCodeFor(t._id.toString(), 'track'); await Track.updateOne({ _id: t._id }, { $set: { joinCode: jc } }); nt += 1; } console.log(`Backfilled joinCode for ${nt} track(s).`); await mongoose.disconnect(); } run().catch((err) => { console.error(err); process.exit(1); });