From 2ec5e02061f30e387c23776278795afa392da9e7 Mon Sep 17 00:00:00 2001 From: Adriaan Jacquet Date: Sun, 6 Apr 2025 19:57:16 +0200 Subject: [PATCH] feat: DELETE op assignment geimplementeerd --- backend/src/controllers/assignments.ts | 14 +++++++++++++- backend/src/routes/assignments.ts | 5 +++-- backend/src/services/assignments.ts | 10 ++++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/backend/src/controllers/assignments.ts b/backend/src/controllers/assignments.ts index a284360d..86e3217e 100644 --- a/backend/src/controllers/assignments.ts +++ b/backend/src/controllers/assignments.ts @@ -1,5 +1,5 @@ import { Request, Response } from 'express'; -import { createAssignment, getAllAssignments, getAssignment, getAssignmentsSubmissions } from '../services/assignments.js'; +import { createAssignment, deleteAssignment, getAllAssignments, getAssignment, getAssignmentsSubmissions } from '../services/assignments.js'; import { AssignmentDTO } from '@dwengo-1/common/interfaces/assignment'; import {requireFields} from "./error-helper"; import {BadRequestException} from "../exceptions/bad-request-exception"; @@ -42,6 +42,18 @@ export async function getAssignmentHandler(req: Request, res: Response): Promise res.json({ assignment }); } +export async function deleteAssignmentHandler(req: Request, res: Response): Promise { + const id = Number(req.params.id); + const classid = req.params.classid; + requireFields({ id, classid }); + + if (isNaN(id)) { + throw new BadRequestException("Assignment id should be a number"); + } + + const assignment = await deleteAssignment(classid, id); +} + export async function getAssignmentsSubmissionsHandler(req: Request, res: Response): Promise { const classid = req.params.classid; const assignmentNumber = Number(req.params.id); diff --git a/backend/src/routes/assignments.ts b/backend/src/routes/assignments.ts index 3652dcc6..054de407 100644 --- a/backend/src/routes/assignments.ts +++ b/backend/src/routes/assignments.ts @@ -1,6 +1,7 @@ import express from 'express'; import { createAssignmentHandler, + deleteAssignmentHandler, getAllAssignmentsHandler, getAssignmentHandler, getAssignmentsSubmissionsHandler, @@ -9,14 +10,14 @@ import groupRouter from './groups.js'; const router = express.Router({ mergeParams: true }); -// Root endpoint used to search objects router.get('/', getAllAssignmentsHandler); router.post('/', createAssignmentHandler); -// Information about an assignment with id 'id' router.get('/:id', getAssignmentHandler); +router.delete('/:id', deleteAssignmentHandler); + router.get('/:id/submissions', getAssignmentsSubmissionsHandler); router.get('/:id/questions', (_req, res) => { diff --git a/backend/src/services/assignments.ts b/backend/src/services/assignments.ts index 05ebb1d1..a2892bed 100644 --- a/backend/src/services/assignments.ts +++ b/backend/src/services/assignments.ts @@ -57,6 +57,16 @@ export async function getAssignment(classid: string, id: number): Promise { + const assignment = await fetchAssignment(classid, id); + const cls = await fetchClass(classid); + + const assignmentRepository = getAssignmentRepository(); + await assignmentRepository.deleteByClassAndId(cls, id); + + return mapToAssignmentDTO(assignment); +} + export async function getAssignmentsSubmissions( classid: string, assignmentNumber: number,