feat: requirefields in backend controllers (class, assignment, submission, group)
This commit is contained in:
parent
d2f5219b69
commit
c52bcde3ae
3 changed files with 38 additions and 63 deletions
|
@ -22,8 +22,8 @@ export async function createAssignmentHandler(req: Request, res: Response): Prom
|
|||
const title = req.body.title;
|
||||
|
||||
requireFields({ description, language, learningPath, title });
|
||||
const assignmentData = req.body as AssignmentDTO;
|
||||
|
||||
const assignmentData = req.body as AssignmentDTO;
|
||||
const assignment = await createAssignment(classid, assignmentData);
|
||||
|
||||
res.json({ assignment });
|
||||
|
|
|
@ -1,29 +1,22 @@
|
|||
import { Request, Response } from 'express';
|
||||
import { createGroup, getAllGroups, getGroup, getGroupSubmissions } from '../services/groups.js';
|
||||
import { GroupDTO } from '@dwengo-1/common/interfaces/group';
|
||||
import { requireFields } from './error-helper.js';
|
||||
import { BadRequestException } from '../exceptions/bad-request-exception.js';
|
||||
|
||||
// Typescript is annoywith with parameter forwarding from class.ts
|
||||
interface GroupParams {
|
||||
classid: string;
|
||||
assignmentid: string;
|
||||
groupid?: string;
|
||||
}
|
||||
|
||||
export async function getGroupHandler(req: Request<GroupParams>, res: Response): Promise<void> {
|
||||
export async function getGroupHandler(req: Request, res: Response): Promise<void> {
|
||||
const classId = req.params.classid;
|
||||
const assignmentId = parseInt(req.params.assignmentid);
|
||||
const groupId = parseInt(req.params.groupid);
|
||||
const full = req.query.full === 'true';
|
||||
const assignmentId = Number(req.params.assignmentid);
|
||||
requireFields({ classId, assignmentId, groupId });
|
||||
|
||||
if (isNaN(assignmentId)) {
|
||||
res.status(400).json({ error: 'Assignment id must be a number' });
|
||||
return;
|
||||
throw new BadRequestException('Assignment id must be a number');
|
||||
}
|
||||
|
||||
const groupId = Number(req.params.groupid!); // Can't be undefined
|
||||
|
||||
if (isNaN(groupId)) {
|
||||
res.status(400).json({ error: 'Group id must be a number' });
|
||||
return;
|
||||
throw new BadRequestException('Group id must be a number');
|
||||
}
|
||||
|
||||
const group = await getGroup(classId, assignmentId, groupId, full);
|
||||
|
@ -33,68 +26,57 @@ export async function getGroupHandler(req: Request<GroupParams>, res: Response):
|
|||
return;
|
||||
}
|
||||
|
||||
res.json(group);
|
||||
res.json({ group });
|
||||
}
|
||||
|
||||
export async function getAllGroupsHandler(req: Request, res: Response): Promise<void> {
|
||||
const classId = req.params.classid;
|
||||
const full = req.query.full === 'true';
|
||||
|
||||
const assignmentId = Number(req.params.assignmentid);
|
||||
const full = req.query.full === 'true';
|
||||
requireFields({ classId, assignmentId });
|
||||
|
||||
if (isNaN(assignmentId)) {
|
||||
res.status(400).json({ error: 'Assignment id must be a number' });
|
||||
return;
|
||||
throw new BadRequestException('Assignment id must be a number');
|
||||
}
|
||||
|
||||
const groups = await getAllGroups(classId, assignmentId, full);
|
||||
|
||||
res.json({
|
||||
groups: groups,
|
||||
});
|
||||
res.json({ groups });
|
||||
}
|
||||
|
||||
export async function createGroupHandler(req: Request, res: Response): Promise<void> {
|
||||
const classid = req.params.classid;
|
||||
const assignmentId = Number(req.params.assignmentid);
|
||||
|
||||
requireFields({ classid, assignmentId });
|
||||
|
||||
if (isNaN(assignmentId)) {
|
||||
res.status(400).json({ error: 'Assignment id must be a number' });
|
||||
return;
|
||||
throw new BadRequestException('Assignment id must be a number');
|
||||
}
|
||||
|
||||
const groupData = req.body as GroupDTO;
|
||||
const group = await createGroup(groupData, classid, assignmentId);
|
||||
|
||||
if (!group) {
|
||||
res.status(500).json({ error: 'Something went wrong while creating group' });
|
||||
return;
|
||||
}
|
||||
|
||||
res.status(201).json(group);
|
||||
res.status(201).json({ group });
|
||||
}
|
||||
|
||||
export async function getGroupSubmissionsHandler(req: Request, res: Response): Promise<void> {
|
||||
const classId = req.params.classid;
|
||||
const full = req.query.full === 'true';
|
||||
|
||||
const assignmentId = Number(req.params.assignmentid);
|
||||
const groupId = Number(req.params.groupid);
|
||||
const full = req.query.full === 'true';
|
||||
|
||||
requireFields({ classId, assignmentId, groupId });
|
||||
|
||||
if (isNaN(assignmentId)) {
|
||||
res.status(400).json({ error: 'Assignment id must be a number' });
|
||||
return;
|
||||
throw new BadRequestException('Assignment id must be a number');
|
||||
}
|
||||
|
||||
const groupId = Number(req.params.groupid); // Can't be undefined
|
||||
|
||||
if (isNaN(groupId)) {
|
||||
res.status(400).json({ error: 'Group id must be a number' });
|
||||
return;
|
||||
throw new BadRequestException('Group id must be a number');
|
||||
}
|
||||
|
||||
const submissions = await getGroupSubmissions(classId, assignmentId, groupId, full);
|
||||
|
||||
res.json({
|
||||
submissions: submissions,
|
||||
});
|
||||
res.json({ submissions });
|
||||
}
|
||||
|
|
|
@ -5,22 +5,22 @@ import { NotFoundException } from '../exceptions/not-found-exception.js';
|
|||
import { LearningObjectIdentifier } from '../entities/content/learning-object-identifier.js';
|
||||
import { Language, languageMap } from '@dwengo-1/common/util/language';
|
||||
import { SubmissionDTO } from '@dwengo-1/common/interfaces/submission';
|
||||
import { requireFields } from './error-helper.js';
|
||||
|
||||
|
||||
|
||||
export async function getSubmissionHandler(req: Request, res: Response): Promise<void> {
|
||||
const submissionNumber = +req.params.id;
|
||||
const lohruid = req.params.hruid;
|
||||
const lang = languageMap[req.query.language as string] || Language.Dutch;
|
||||
const version = (req.query.version || 1) as number;
|
||||
const submissionNumber = Number(req.params.id);
|
||||
requireFields({ lohruid, submissionNumber });
|
||||
|
||||
if (isNaN(submissionNumber)) {
|
||||
throw new BadRequestException('Submission number must be a number');
|
||||
}
|
||||
|
||||
const lohruid = req.params.hruid;
|
||||
const lang = languageMap[req.query.language as string] || Language.Dutch;
|
||||
const version = (req.query.version || 1) as number;
|
||||
|
||||
const loId = new LearningObjectIdentifier(lohruid, lang, version);
|
||||
|
||||
const submission = await getSubmission(loId, submissionNumber);
|
||||
|
||||
res.json({ submission });
|
||||
|
@ -30,9 +30,9 @@ export async function getAllSubmissionsHandler(req: Request, res: Response): Pro
|
|||
const lohruid = req.params.hruid;
|
||||
const lang = languageMap[req.query.language as string] || Language.Dutch;
|
||||
const version = (req.query.version || 1) as number;
|
||||
requireFields({ lohruid });
|
||||
|
||||
const loId = new LearningObjectIdentifier(lohruid, lang, version);
|
||||
|
||||
const submissions = await getAllSubmissions(loId);
|
||||
|
||||
res.json({ submissions });
|
||||
|
@ -40,31 +40,24 @@ export async function getAllSubmissionsHandler(req: Request, res: Response): Pro
|
|||
|
||||
export async function createSubmissionHandler(req: Request, res: Response): Promise<void> {
|
||||
const submissionDTO = req.body as SubmissionDTO;
|
||||
|
||||
const submission = await createSubmission(submissionDTO);
|
||||
|
||||
if (!submission) {
|
||||
res.status(400).json({ error: 'Failed to create submission' });
|
||||
return;
|
||||
}
|
||||
|
||||
res.json({ submission });
|
||||
}
|
||||
|
||||
export async function deleteSubmissionHandler(req: Request, res: Response): Promise<void> {
|
||||
const hruid = req.params.hruid;
|
||||
const submissionNumber = Number(req.params.id);
|
||||
|
||||
const lang = languageMap[req.query.language as string] || Language.Dutch;
|
||||
const version = (req.query.version || 1) as number;
|
||||
const submissionNumber = Number(req.params.id);
|
||||
requireFields({ hruid, submissionNumber });
|
||||
|
||||
if (isNaN(submissionNumber)) {
|
||||
throw new BadRequestException('Submission number must be a number');
|
||||
}
|
||||
|
||||
const loId = new LearningObjectIdentifier(hruid, lang, version);
|
||||
|
||||
const submission = await deleteSubmission(loId, submissionNumber);
|
||||
|
||||
if (!submission) {
|
||||
throw new NotFoundException('Could not delete submission');
|
||||
}
|
||||
|
||||
res.json({ submission });
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue