59 lines
1.9 KiB
JavaScript
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);
|
|
});
|