56 lines
1.8 KiB
JavaScript
56 lines
1.8 KiB
JavaScript
/**
|
|
* One-off: set joinCode on all sessions, tracks, and events (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 Event = require(path.join(__dirname, '..', 'src', 'models', 'Event'));
|
|
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).`);
|
|
|
|
const events = await Event.find({}).select('_id').lean();
|
|
let ne = 0;
|
|
for (const ev of events) {
|
|
const jc = eventBuzzCodeFor(ev._id.toString(), 'event');
|
|
await Event.updateOne({ _id: ev._id }, { $set: { joinCode: jc } });
|
|
ne += 1;
|
|
}
|
|
console.log(`Backfilled joinCode for ${ne} event(s).`);
|
|
|
|
await mongoose.disconnect();
|
|
}
|
|
|
|
run().catch((err) => {
|
|
console.error(err);
|
|
process.exit(1);
|
|
});
|