feat(backend): Endpoints voor het verwijderen van leerobjecten
This commit is contained in:
		
							parent
							
								
									db92eff759
								
							
						
					
					
						commit
						a7f90aace3
					
				
					 3 changed files with 37 additions and 0 deletions
				
			
		|  | @ -92,3 +92,22 @@ export async function handlePostLearningObject(req: AuthenticatedRequest, res: R | |||
|     ); | ||||
|     res.json(learningObject); | ||||
| } | ||||
| 
 | ||||
| export async function handleDeleteLearningObject(req: AuthenticatedRequest, res: Response): Promise<void> { | ||||
|     const learningObjectId = getLearningObjectIdentifierFromRequest(req); | ||||
| 
 | ||||
|     if (!learningObjectId.version) { | ||||
|         throw new BadRequestException("When deleting a learning object, a version must be specified."); | ||||
|     } | ||||
| 
 | ||||
|     const deletedLearningObject = await learningObjectService.deleteLearningObject({ | ||||
|         hruid: learningObjectId.hruid, | ||||
|         version: learningObjectId.version, | ||||
|         language: learningObjectId.language | ||||
|     }); | ||||
|     if (deletedLearningObject) { | ||||
|         res.json(deletedLearningObject); | ||||
|     } else { | ||||
|         throw new NotFoundException("Learning object not found"); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -42,4 +42,13 @@ export class LearningObjectRepository extends DwengoEntityRepository<LearningObj | |||
|             { populate: ['admins'] } // Make sure to load admin relations
 | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
|     public async removeByIdentifier(identifier: LearningObjectIdentifier): Promise<LearningObject | null> { | ||||
|         const learningObject = await this.findByIdentifier(identifier); | ||||
|         if (learningObject) { | ||||
|             await this.em.removeAndFlush(learningObject); | ||||
|         } | ||||
|         return learningObject; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -10,6 +10,7 @@ import { | |||
| import {getLearningObjectRepository, getTeacherRepository} from "../../data/repositories"; | ||||
| import {processLearningObjectZip} from "./learning-object-zip-processing-service"; | ||||
| import {LearningObject} from "../../entities/content/learning-object.entity"; | ||||
| import { LearningObjectIdentifier } from '../../entities/content/learning-object-identifier.js'; | ||||
| 
 | ||||
| function getProvider(id: LearningObjectIdentifierDTO): LearningObjectProvider { | ||||
|     if (id.hruid.startsWith(getEnvVar(envVars.UserContentPrefix))) { | ||||
|  | @ -83,6 +84,14 @@ const learningObjectService = { | |||
| 
 | ||||
|         await learningObjectRepository.save(learningObject, {preventOverwrite: true}); | ||||
|         return learningObject; | ||||
|     }, | ||||
| 
 | ||||
|     /** | ||||
|      * Deletes the learning object with the given identifier. | ||||
|      */ | ||||
|     async deleteLearningObject(id: LearningObjectIdentifier): Promise<LearningObject | null> { | ||||
|         const learningObjectRepository = getLearningObjectRepository(); | ||||
|         return await learningObjectRepository.removeByIdentifier(id); | ||||
|     } | ||||
| }; | ||||
| 
 | ||||
|  |  | |||
		Reference in a new issue
	
	 Gerald Schmittinger
						Gerald Schmittinger