#!/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=] [--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='); } 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); });