EventBuzz_Backend/scripts/seed-global-microsite-v2-te...

59 lines
1.9 KiB
JavaScript

#!/usr/bin/env node
/**
* Seed all bundled global microsite-v2 templates (or one via --slug=).
*
* Usage:
* node scripts/seed-global-microsite-v2-templates.js [--user-id=<mongoId>] [--db-only]
* node scripts/seed-global-microsite-v2-templates.js --slug=eventify
*/
require('dotenv').config();
const mongoose = require('mongoose');
const { connectDB } = require('../src/config/database');
const User = require('../src/models/User');
const { GLOBAL_MICROSITE_V2_TEMPLATES } = require('../src/config/globalMicrositeV2Templates');
const { seedOneMicrositeV2Template } = require('./lib/seedOneMicrositeV2Template');
async function findSeedUser(userIdArg) {
if (userIdArg) {
const u = await User.findById(userIdArg);
if (u) return u;
}
const superAdmin = await User.findOne({ role: 'super_admin' }).sort({ createdAt: 1 });
if (superAdmin) return superAdmin;
throw new Error('No super_admin user found. Pass --user-id=<mongoId>');
}
async function main() {
const dbOnly = process.argv.includes('--db-only');
const userIdArg = (process.argv.find((a) => a.startsWith('--user-id=')) || '').split('=')[1];
const slugArg = (process.argv.find((a) => a.startsWith('--slug=')) || '').split('=')[1]?.trim().toLowerCase();
await connectDB();
const user = await findSeedUser(userIdArg);
console.log(`Using user: ${user.email || user._id}`);
const targets = slugArg
? GLOBAL_MICROSITE_V2_TEMPLATES.filter((t) => t.slug === slugArg)
: GLOBAL_MICROSITE_V2_TEMPLATES;
if (!targets.length) {
throw new Error(
slugArg
? `Unknown slug "${slugArg}". Available: ${GLOBAL_MICROSITE_V2_TEMPLATES.map((t) => t.slug).join(', ')}`
: 'No templates configured.',
);
}
for (const def of targets) {
await seedOneMicrositeV2Template({ slug: def.slug, user, dbOnly });
}
await mongoose.disconnect();
console.log('Done.');
}
main().catch((err) => {
console.error(err);
process.exit(1);
});