mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2025-12-19 10:07:46 -05:00
62 lines
1.5 KiB
TypeScript
62 lines
1.5 KiB
TypeScript
import { PrismaClient } from '@prisma/client';
|
|
import { generateExam } from '../../../src/exam-environment/utils/exam';
|
|
import { MONGOHQ_URL } from '../../../src/utils/env';
|
|
|
|
const args = process.argv.slice(2);
|
|
const ENV_EXAM_ID = args[0];
|
|
const NUMBER_OF_EXAMS_TO_GENERATE = Number(args[1]);
|
|
|
|
if (!ENV_EXAM_ID) {
|
|
throw Error('First argument must be the EnvExam _id');
|
|
}
|
|
if (!NUMBER_OF_EXAMS_TO_GENERATE) {
|
|
throw Error('Second argument must be an unsigned integer');
|
|
}
|
|
|
|
const prisma = new PrismaClient({
|
|
datasources: {
|
|
db: {
|
|
url: MONGOHQ_URL
|
|
}
|
|
}
|
|
});
|
|
|
|
/// TODO:
|
|
/// 1. Deprecate all previous generated exams for a given exam id?
|
|
async function main() {
|
|
console.info('Connecting to cluster...');
|
|
await prisma.$connect();
|
|
console.info('Connected.');
|
|
|
|
const exam = await prisma.envExam.findUnique({
|
|
where: {
|
|
id: ENV_EXAM_ID
|
|
}
|
|
});
|
|
|
|
if (!exam) {
|
|
throw Error(`No exam with id "${ENV_EXAM_ID}" found.`);
|
|
}
|
|
|
|
let numberOfExamsGenerated = 0;
|
|
|
|
console.info(
|
|
`Exam with _id ${ENV_EXAM_ID} found. Generating ${NUMBER_OF_EXAMS_TO_GENERATE} exams...`
|
|
);
|
|
while (numberOfExamsGenerated < NUMBER_OF_EXAMS_TO_GENERATE) {
|
|
try {
|
|
const generatedExam = generateExam(exam);
|
|
await prisma.envGeneratedExam.create({
|
|
data: generatedExam
|
|
});
|
|
numberOfExamsGenerated++;
|
|
console.info(`Generated ${numberOfExamsGenerated} exams`);
|
|
} catch (e) {
|
|
console.log(e);
|
|
}
|
|
}
|
|
console.log(`Finished generating exams.`);
|
|
}
|
|
|
|
void main();
|