import { Collection, MikroORM } from '@mikro-orm/core'; import { forkEntityManager } from '../src/orm'; import { makeTestStudents } from '../tests/test_assets/users/students.testdata'; import { makeTestTeachers } from '../tests/test_assets/users/teachers.testdata'; import { makeTestLearningObjects } from '../tests/test_assets/content/learning-objects.testdata'; import { makeTestLearningPaths } from '../tests/test_assets/content/learning-paths.testdata'; import { makeTestClasses } from '../tests/test_assets/classes/classes.testdata'; import { makeTestAssignemnts } from '../tests/test_assets/assignments/assignments.testdata'; import { getTestGroup01, getTestGroup02, getTestGroup03, getTestGroup04, makeTestGroups } from '../tests/test_assets/assignments/groups.testdata'; import { Group } from '../src/entities/assignments/group.entity'; import { makeTestTeacherInvitations } from '../tests/test_assets/classes/teacher-invitations.testdata'; import { makeTestClassJoinRequests } from '../tests/test_assets/classes/class-join-requests.testdata'; import { makeTestAttachments } from '../tests/test_assets/content/attachments.testdata'; import { makeTestQuestions } from '../tests/test_assets/questions/questions.testdata'; import { makeTestAnswers } from '../tests/test_assets/questions/answers.testdata'; import { makeTestSubmissions } from '../tests/test_assets/assignments/submission.testdata'; import { getLogger } from '../src/logging/initalize'; export async function seedORM(orm: MikroORM): Promise { const logger = getLogger(); logger.debug('Clearing database...'); await orm.schema.clearDatabase(); logger.debug('Forking entity manager...'); const em = forkEntityManager(); logger.debug('Seeding database...'); const students = makeTestStudents(em); const teachers = makeTestTeachers(em); const learningObjects = makeTestLearningObjects(em); const learningPaths = makeTestLearningPaths(em); const classes = makeTestClasses(em); const assignments = makeTestAssignemnts(em); const groups = makeTestGroups(em); assignments[0].groups = new Collection([getTestGroup01(), getTestGroup02(), getTestGroup03()]); assignments[1].groups = new Collection([getTestGroup04()]); const teacherInvitations = makeTestTeacherInvitations(em); const classJoinRequests = makeTestClassJoinRequests(em); const attachments = makeTestAttachments(em); learningObjects[1].attachments = attachments; const questions = makeTestQuestions(em); const answers = makeTestAnswers(em); const submissions = makeTestSubmissions(em); // Persist all entities await em.persistAndFlush([ ...students, ...teachers, ...learningObjects, ...learningPaths, ...classes, ...assignments, ...groups, ...teacherInvitations, ...classJoinRequests, ...attachments, ...questions, ...answers, ...submissions, ]); logger.info('Development database seeded successfully!'); }