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);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue