feat: werken aan delete voor assignment

This commit is contained in:
Adriaan Jacquet 2025-04-01 22:57:30 +02:00
parent da5cb7d02d
commit c79a295e68
3 changed files with 14 additions and 19 deletions

View file

@ -2,13 +2,7 @@ import { Request, Response } from 'express';
import { createAssignment, getAllAssignments, getAssignment, getAssignmentsSubmissions } from '../services/assignments.js';
import { AssignmentDTO } from '../interfaces/assignment.js';
// Typescript is annoy with with parameter forwarding from class.ts
interface AssignmentParams {
classid: string;
id: string;
}
export async function getAllAssignmentsHandler(req: Request<AssignmentParams>, res: Response): Promise<void> {
export async function getAllAssignmentsHandler(req: Request, res: Response): Promise<void> {
const classid = req.params.classid;
const full = req.query.full === 'true';
@ -19,7 +13,7 @@ export async function getAllAssignmentsHandler(req: Request<AssignmentParams>, r
});
}
export async function createAssignmentHandler(req: Request<AssignmentParams>, res: Response): Promise<void> {
export async function createAssignmentHandler(req: Request, res: Response): Promise<void> {
const classid = req.params.classid;
const assignmentData = req.body as AssignmentDTO;
@ -40,7 +34,7 @@ export async function createAssignmentHandler(req: Request<AssignmentParams>, re
res.status(201).json(assignment);
}
export async function getAssignmentHandler(req: Request<AssignmentParams>, res: Response): Promise<void> {
export async function getAssignmentHandler(req: Request, res: Response): Promise<void> {
const id = +req.params.id;
const classid = req.params.classid;
@ -59,7 +53,7 @@ export async function getAssignmentHandler(req: Request<AssignmentParams>, res:
res.json(assignment);
}
export async function getAssignmentsSubmissionsHandler(req: Request<AssignmentParams>, res: Response): Promise<void> {
export async function getAssignmentsSubmissionsHandler(req: Request, res: Response): Promise<void> {
const classid = req.params.classid;
const assignmentNumber = +req.params.id;
const full = req.query.full === 'true';

View file

@ -1,30 +1,31 @@
import { getAssignmentRepository, getClassRepository, getGroupRepository, getQuestionRepository, getSubmissionRepository } from '../data/repositories.js';
import { Assignment } from '../entities/assignments/assignment.entity.js';
import { NotFoundException } from '../exceptions/not-found-exception.js';
import { AssignmentDTO, mapToAssignment, mapToAssignmentDTO, mapToAssignmentDTOId } from '../interfaces/assignment.js';
import { mapToQuestionDTO, mapToQuestionId, QuestionDTO, QuestionId } from '../interfaces/question.js';
import { mapToSubmissionDTO, mapToSubmissionDTOId, SubmissionDTO, SubmissionDTOId } from '../interfaces/submission.js';
import { fetchClass } from './classes.js';
export async function fetchAssignment(classid: string, assignmentNumber: number): Promise<Assignment | null> {
export async function fetchAssignment(classid: string, assignmentNumber: number): Promise<Assignment> {
const classRepository = getClassRepository();
const cls = await classRepository.findById(classid);
if (!cls) {
return null;
throw new NotFoundException('Could not find assignment\'s class');
}
const assignmentRepository = getAssignmentRepository();
const assignment = await assignmentRepository.findByClassAndId(cls, assignmentNumber);
if (!assignment) {
throw new NotFoundException('Could not find assignment');
}
return assignment;
}
export async function getAllAssignments(classid: string, full: boolean): Promise<AssignmentDTO[]> {
const classRepository = getClassRepository();
const cls = await classRepository.findById(classid);
if (!cls) {
return [];
}
const cls = await fetchClass(classid);
const assignmentRepository = getAssignmentRepository();
const assignments = await assignmentRepository.findAllAssignmentsInClass(cls);

View file

@ -8,7 +8,7 @@ import { getLogger } from '../logging/initalize.js';
const logger = getLogger();
async function fetchClass(classid: string): Promise<Class> {
export async function fetchClass(classid: string): Promise<Class> {
const classRepository = getClassRepository();
const cls = await classRepository.findById(classid);