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);
|
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
|
{ 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 {getLearningObjectRepository, getTeacherRepository} from "../../data/repositories";
|
||||||
import {processLearningObjectZip} from "./learning-object-zip-processing-service";
|
import {processLearningObjectZip} from "./learning-object-zip-processing-service";
|
||||||
import {LearningObject} from "../../entities/content/learning-object.entity";
|
import {LearningObject} from "../../entities/content/learning-object.entity";
|
||||||
|
import { LearningObjectIdentifier } from '../../entities/content/learning-object-identifier.js';
|
||||||
|
|
||||||
function getProvider(id: LearningObjectIdentifierDTO): LearningObjectProvider {
|
function getProvider(id: LearningObjectIdentifierDTO): LearningObjectProvider {
|
||||||
if (id.hruid.startsWith(getEnvVar(envVars.UserContentPrefix))) {
|
if (id.hruid.startsWith(getEnvVar(envVars.UserContentPrefix))) {
|
||||||
|
@ -83,6 +84,14 @@ const learningObjectService = {
|
||||||
|
|
||||||
await learningObjectRepository.save(learningObject, {preventOverwrite: true});
|
await learningObjectRepository.save(learningObject, {preventOverwrite: true});
|
||||||
return learningObject;
|
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