diff --git a/backend/src/entities/assignments/group.entity.ts b/backend/src/entities/assignments/group.entity.ts index 213e0f38..e26dcbe1 100644 --- a/backend/src/entities/assignments/group.entity.ts +++ b/backend/src/entities/assignments/group.entity.ts @@ -18,6 +18,8 @@ export class Group { @ManyToMany({ entity: () => Student, + owner: true, + inversedBy: "groups" }) - members!: Student[]; + members: Collection = new Collection(this); } diff --git a/backend/src/entities/classes/class.entity.ts b/backend/src/entities/classes/class.entity.ts index 63315304..7ad66c52 100644 --- a/backend/src/entities/classes/class.entity.ts +++ b/backend/src/entities/classes/class.entity.ts @@ -14,9 +14,9 @@ export class Class { @Property({ type: 'string' }) displayName!: string; - @ManyToMany(() => Teacher) + @ManyToMany({entity: () => Teacher, owner: true, inversedBy: 'classes'}) teachers!: Collection; - @ManyToMany(() => Student) + @ManyToMany({entity: () => Student, owner: true, inversedBy: 'classes'}) students!: Collection; } diff --git a/backend/src/entities/users/student.entity.ts b/backend/src/entities/users/student.entity.ts index 58e82765..2c4cfb68 100644 --- a/backend/src/entities/users/student.entity.ts +++ b/backend/src/entities/users/student.entity.ts @@ -8,9 +8,9 @@ import { StudentRepository } from '../../data/users/student-repository.js'; repository: () => StudentRepository, }) export class Student extends User { - @ManyToMany(() => Class) + @ManyToMany({entity: () => Class, mappedBy: 'students'}) classes!: Collection; - @ManyToMany(() => Group) - groups!: Collection; + @ManyToMany({entity: () => Group, mappedBy: 'members'}) + groups: Collection = new Collection(this); } diff --git a/backend/src/entities/users/teacher.entity.ts b/backend/src/entities/users/teacher.entity.ts index d53ca603..900e3610 100644 --- a/backend/src/entities/users/teacher.entity.ts +++ b/backend/src/entities/users/teacher.entity.ts @@ -5,6 +5,6 @@ import { TeacherRepository } from '../../data/users/teacher-repository.js'; @Entity({ repository: () => TeacherRepository }) export class Teacher extends User { - @ManyToMany(() => Class) + @ManyToMany({entity: () => Class, mappedBy: 'teachers'}) classes!: Collection; } diff --git a/backend/src/middleware/error-handling/error-handler.ts b/backend/src/middleware/error-handling/error-handler.ts index d7315603..ff3add3a 100644 --- a/backend/src/middleware/error-handling/error-handler.ts +++ b/backend/src/middleware/error-handling/error-handler.ts @@ -9,7 +9,7 @@ export function errorHandler(err: unknown, _req: Request, res: Response, _: Next logger.warn(`An error occurred while handling a request: ${err} (-> HTTP ${err.status})`); res.status(err.status).json(err); } else { - logger.error(`Unexpected error occurred while handing a request: ${JSON.stringify(err)}`); + logger.error(`Unexpected error occurred while handing a request: ${err}`); res.status(500).json(err); } } diff --git a/backend/src/services/groups.ts b/backend/src/services/groups.ts index 393268c1..ec152da4 100644 --- a/backend/src/services/groups.ts +++ b/backend/src/services/groups.ts @@ -1,4 +1,4 @@ -import { Collection, EntityDTO } from '@mikro-orm/core'; +import { EntityDTO } from '@mikro-orm/core'; import { getGroupRepository, getStudentRepository, getSubmissionRepository } from '../data/repositories.js'; import { Group } from '../entities/assignments/group.entity.js'; import { mapToGroupDTO, mapToGroupDTOId } from '../interfaces/group.js'; @@ -9,8 +9,6 @@ import { fetchAssignment } from './assignments.js'; import { NotFoundException } from '../exceptions/not-found-exception.js'; import { putObject } from './service-helper.js'; import { Student } from '../entities/users/student.entity.js'; -import { GroupRepository } from '../data/assignments/group-repository.js'; -import { assert } from 'console'; export async function fetchGroup(classId: string, assignmentNumber: number, groupNumber: number): Promise { const assignment = await fetchAssignment(classId, assignmentNumber); @@ -72,17 +70,13 @@ export async function createGroup(groupData: GroupDTO, classid: string, assignme ).filter((student): student is Student => student !== null); const assignment = await fetchAssignment(classid, assignmentNumber); - + const groupRepository = getGroupRepository(); const newGroup = groupRepository.create({ assignment: assignment, - members: members, + members: members }); - assert(newGroup.groupNumber !== undefined, "NO GROUPNUMBER WAS ASSIGNED"); - - console.log(newGroup); - try { await groupRepository.save(newGroup); } catch(e) {