feat: DELETE voor group geimplementeerd
This commit is contained in:
		
							parent
							
								
									2ec5e02061
								
							
						
					
					
						commit
						709d5f019a
					
				
					 3 changed files with 32 additions and 11 deletions
				
			
		|  | @ -1,14 +1,11 @@ | |||
| import { Request, Response } from 'express'; | ||||
| import { createGroup, getAllGroups, getGroup, getGroupSubmissions } from '../services/groups.js'; | ||||
| import { createGroup, deleteGroup, 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'; | ||||
| import { getLogger } from '../logging/initalize.js'; | ||||
| 
 | ||||
| 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); | ||||
| function checkGroupFields(classId: any, assignmentId: any, groupId: any) { | ||||
|     requireFields({ classId, assignmentId, groupId }); | ||||
| 
 | ||||
|     if (isNaN(assignmentId)) { | ||||
|  | @ -18,14 +15,27 @@ export async function getGroupHandler(req: Request, res: Response): Promise<void | |||
|     if (isNaN(groupId)) { | ||||
|         throw new BadRequestException('Group id must be a number'); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| 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); | ||||
|     checkGroupFields(classId, assignmentId, groupId); | ||||
| 
 | ||||
|     const group = await getGroup(classId, assignmentId, groupId); | ||||
| 
 | ||||
|     if (!group) { | ||||
|         res.status(404).json({ error: 'Group not found' }); | ||||
|         return; | ||||
|     res.json({ group }); | ||||
| } | ||||
| 
 | ||||
| export async function deleteGroupHandler(req: Request, res: Response): Promise<void> { | ||||
|     const classId = req.params.classid; | ||||
|     const assignmentId = parseInt(req.params.assignmentid); | ||||
|     const groupId = parseInt(req.params.groupid); | ||||
|     checkGroupFields(classId, assignmentId, groupId); | ||||
| 
 | ||||
|     const group = await deleteGroup(classId, assignmentId, groupId); | ||||
| 
 | ||||
|     res.json({ group }); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| import express from 'express'; | ||||
| import { createGroupHandler, getAllGroupsHandler, getGroupHandler, getGroupSubmissionsHandler } from '../controllers/groups.js'; | ||||
| import { createGroupHandler, deleteGroupHandler, getAllGroupsHandler, getGroupHandler, getGroupSubmissionsHandler } from '../controllers/groups.js'; | ||||
| 
 | ||||
| const router = express.Router({ mergeParams: true }); | ||||
| 
 | ||||
|  | @ -8,9 +8,10 @@ router.get('/', getAllGroupsHandler); | |||
| 
 | ||||
| router.post('/', createGroupHandler); | ||||
| 
 | ||||
| // Information about a group (members, ... [TODO DOC])
 | ||||
| router.get('/:groupid', getGroupHandler); | ||||
| 
 | ||||
| router.delete('/:groupid', deleteGroupHandler); | ||||
| 
 | ||||
| router.get('/:groupid/submissions', getGroupSubmissionsHandler); | ||||
| 
 | ||||
| export default router; | ||||
|  |  | |||
|  | @ -35,6 +35,16 @@ export async function getGroup(classId: string, assignmentNumber: number, groupN | |||
|     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); | ||||
|      | ||||
|     const groupRepository = getGroupRepository(); | ||||
|     await groupRepository.deleteByAssignmentAndGroupNumber(assignment, groupNumber); | ||||
| 
 | ||||
|     return mapToGroupDTO(group); | ||||
| } | ||||
| 
 | ||||
| export async function getExistingGroupFromGroupDTO(groupData: GroupDTO) { | ||||
|     const classId = typeof(groupData.class) === 'string' ? groupData.class : groupData.class.id; | ||||
|     const assignmentNumber = typeof(groupData.assignment) === 'number' ? groupData.assignment : groupData.assignment.id; | ||||
|  |  | |||
		Reference in a new issue
	
	 Adriaan Jacquet
						Adriaan Jacquet