fix(backend): Modellering van ManyToMany-relationships verbeterd
This commit is contained in:
parent
f4fda7db5d
commit
451ac7546f
6 changed files with 13 additions and 17 deletions
|
@ -18,6 +18,8 @@ export class Group {
|
|||
|
||||
@ManyToMany({
|
||||
entity: () => Student,
|
||||
owner: true,
|
||||
inversedBy: "groups"
|
||||
})
|
||||
members!: Student[];
|
||||
members: Collection<Student> = new Collection<Student>(this);
|
||||
}
|
||||
|
|
|
@ -14,9 +14,9 @@ export class Class {
|
|||
@Property({ type: 'string' })
|
||||
displayName!: string;
|
||||
|
||||
@ManyToMany(() => Teacher)
|
||||
@ManyToMany({entity: () => Teacher, owner: true, inversedBy: 'classes'})
|
||||
teachers!: Collection<Teacher>;
|
||||
|
||||
@ManyToMany(() => Student)
|
||||
@ManyToMany({entity: () => Student, owner: true, inversedBy: 'classes'})
|
||||
students!: Collection<Student>;
|
||||
}
|
||||
|
|
|
@ -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<Class>;
|
||||
|
||||
@ManyToMany(() => Group)
|
||||
groups!: Collection<Group>;
|
||||
@ManyToMany({entity: () => Group, mappedBy: 'members'})
|
||||
groups: Collection<Group> = new Collection<Group>(this);
|
||||
}
|
||||
|
|
|
@ -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<Class>;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<Group> {
|
||||
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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue