feat: PUT op group geimplementeerd

This commit is contained in:
Adriaan Jacquet 2025-04-06 22:27:02 +02:00
parent 4e6f7ccb3d
commit 33f785ebc0
6 changed files with 39 additions and 10 deletions

View file

@ -64,7 +64,7 @@ export async function getAssignment(classid: string, id: number): Promise<Assign
export async function putAssignment(classid: string, id: number, assignmentData: Partial<EntityDTO<Assignment>>): Promise<AssignmentDTO> {
const assignment = await fetchAssignment(classid, id);
await putObject<Assignment, AssignmentDTO>(assignment, assignmentData, getAssignmentRepository());
await putObject<Assignment>(assignment, assignmentData, getAssignmentRepository());
return mapToAssignmentDTO(assignment);
}

View file

@ -62,7 +62,7 @@ export async function createClass(classData: ClassDTO): Promise<ClassDTO> {
export async function putClass(classId: string, classData: Partial<EntityDTO<Class>>): Promise<ClassDTO> {
const cls = await fetchClass(classId);
await putObject<Class, ClassDTO>(cls, classData, getClassRepository());
await putObject<Class>(cls, classData, getClassRepository());
return mapToClassDTO(cls);
}
@ -116,7 +116,7 @@ export async function deleteClassStudent(classId: string, username: string): Pro
const cls = await fetchClass(classId);
const newStudents = { students: cls.students.filter((student) => student.username !== username) };
await putObject<Class, ClassDTO>(cls, newStudents, getClassRepository());
await putObject<Class>(cls, newStudents, getClassRepository());
return mapToClassDTO(cls);
}
@ -125,7 +125,7 @@ export async function deleteClassTeacher(classId: string, username: string): Pro
const cls = await fetchClass(classId);
const newTeachers = { teachers: cls.teachers.filter((teacher) => teacher.username !== username) };
await putObject<Class, ClassDTO>(cls, newTeachers, getClassRepository());
await putObject<Class>(cls, newTeachers, getClassRepository());
return mapToClassDTO(cls);
}
@ -135,7 +135,7 @@ export async function addClassStudent(classId: string, username: string): Promis
const newStudent = await fetchStudent(username);
const newStudents = { students: [...cls.students, newStudent] }
await putObject<Class, ClassDTO>(cls, newStudents, getClassRepository());
await putObject<Class>(cls, newStudents, getClassRepository());
return mapToClassDTO(cls);
}
@ -145,7 +145,7 @@ export async function addClassTeacher(classId: string, username: string): Promis
const newTeacher = await fetchTeacher(username);
const newTeachers = { teachers: [...cls.teachers, newTeacher] };
await putObject<Class, ClassDTO>(cls, newTeachers, getClassRepository());
await putObject<Class>(cls, newTeachers, getClassRepository());
return mapToClassDTO(cls);
}

View file

@ -1,4 +1,4 @@
import { assign } from '@mikro-orm/core';
import { assign, EntityDTO } from '@mikro-orm/core';
import {
getAssignmentRepository,
getClassRepository,
@ -16,6 +16,7 @@ import { getLogger } from '../logging/initalize.js';
import { fetchAssignment } from './assignments.js';
import { NotFoundException } from '../exceptions/not-found-exception.js';
import { fetchClass } from './classes.js';
import { putObject } from './service-helper.js';
export async function fetchGroup(classId: string, assignmentNumber: number, groupNumber: number): Promise<Group> {
const assignment = await fetchAssignment(classId, assignmentNumber);
@ -35,6 +36,19 @@ export async function getGroup(classId: string, assignmentNumber: number, groupN
return mapToGroupDTO(group);
}
export async function putGroup(
classId: string,
assignmentNumber: number,
groupNumber: number,
groupData: Partial<EntityDTO<Group>>
): Promise<GroupDTO> {
const group = await fetchGroup(classId, assignmentNumber, groupNumber);
await putObject<Group>(group, groupData, getGroupRepository());
return mapToGroupDTO(group);
}
export async function deleteGroup(classId: string, assignmentNumber: number, groupNumber: number): Promise<GroupDTO> {
const group = await fetchGroup(classId, assignmentNumber, groupNumber);
const assignment = await fetchAssignment(classId, assignmentNumber);

View file

@ -10,7 +10,7 @@ import { DwengoEntityRepository } from "../data/dwengo-entity-repository";
*
* @returns Nothing.
*/
export async function putObject<T extends Object, DTO>(
export async function putObject<T extends Object>(
object: T,
data: Partial<EntityDTO<FromEntityType<T>>>,
repo: DwengoEntityRepository<T>