fix: UI-imperfecties & diverse bugs omtrent het verwijderen en editeren van leerpaden opgelost
This commit is contained in:
parent
9400b7f33c
commit
9a58126c7c
6 changed files with 126 additions and 28 deletions
|
@ -4,7 +4,6 @@ import { Language } from '@dwengo-1/common/util/language';
|
|||
import { LearningPathNode } from '../../entities/content/learning-path-node.entity.js';
|
||||
import { RequiredEntityData } from '@mikro-orm/core';
|
||||
import { LearningPathTransition } from '../../entities/content/learning-path-transition.entity.js';
|
||||
import { EntityAlreadyExistsException } from '../../exceptions/entity-already-exists-exception.js';
|
||||
|
||||
export class LearningPathRepository extends DwengoEntityRepository<LearningPath> {
|
||||
public async findByHruidAndLanguage(hruid: string, language: Language): Promise<LearningPath | null> {
|
||||
|
@ -53,21 +52,6 @@ export class LearningPathRepository extends DwengoEntityRepository<LearningPath>
|
|||
return this.em.create(LearningPathTransition, transitionData);
|
||||
}
|
||||
|
||||
public async saveLearningPathNodesAndTransitions(
|
||||
path: LearningPath,
|
||||
nodes: LearningPathNode[],
|
||||
transitions: LearningPathTransition[],
|
||||
options?: { preventOverwrite?: boolean }
|
||||
): Promise<void> {
|
||||
if (options?.preventOverwrite && (await this.findOne(path))) {
|
||||
throw new EntityAlreadyExistsException('A learning path with this hruid/language combination already exists.');
|
||||
}
|
||||
const em = this.getEntityManager();
|
||||
await em.persistAndFlush(path);
|
||||
await Promise.all(nodes.map(async (it) => em.persistAndFlush(it)));
|
||||
await Promise.all(transitions.map(async (it) => em.persistAndFlush(it)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes the learning path with the given hruid and language.
|
||||
* @returns the deleted learning path or null if it was not found.
|
||||
|
|
|
@ -134,8 +134,14 @@ const learningPathService = {
|
|||
*/
|
||||
async createNewLearningPath(dto: LearningPath, admins: TeacherDTO[]): Promise<LearningPathEntity> {
|
||||
const repo = getLearningPathRepository();
|
||||
|
||||
const path = mapToLearningPath(dto, admins);
|
||||
await repo.save(path, { preventOverwrite: true });
|
||||
try {
|
||||
await repo.save(path, { preventOverwrite: true });
|
||||
} catch (e: unknown) {
|
||||
repo.getEntityManager().clear();
|
||||
throw e;
|
||||
}
|
||||
return path;
|
||||
},
|
||||
|
||||
|
@ -146,6 +152,7 @@ const learningPathService = {
|
|||
*/
|
||||
async deleteLearningPath(id: LearningPathIdentifier): Promise<LearningPathEntity> {
|
||||
const repo = getLearningPathRepository();
|
||||
|
||||
const deletedPath = await repo.deleteByHruidAndLanguage(id.hruid, id.language);
|
||||
if (deletedPath) {
|
||||
return deletedPath;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue