fix: Problemen met PUT op leerpaden en verschillende kleinere problemen
This commit is contained in:
parent
2db5d77296
commit
96821c40ab
21 changed files with 205 additions and 103 deletions
|
@ -72,6 +72,8 @@ const learningObjectService = {
|
|||
learningObject.hruid = getEnvVar(envVars.UserContentPrefix) + learningObject.hruid;
|
||||
}
|
||||
|
||||
await learningObjectRepository.getEntityManager().flush();
|
||||
|
||||
// Lookup the admin teachers based on their usernames and add them to the admins of the learning object.
|
||||
const teacherRepo = getTeacherRepository();
|
||||
const adminTeachers = await Promise.all(
|
||||
|
|
|
@ -16,6 +16,9 @@ import { Language } from '@dwengo-1/common/util/language';
|
|||
import { Group } from '../../entities/assignments/group.entity';
|
||||
import { Collection } from '@mikro-orm/core';
|
||||
import { v4 } from 'uuid';
|
||||
import { getLogger } from '../../logging/initalize.js';
|
||||
|
||||
const logger = getLogger();
|
||||
|
||||
/**
|
||||
* Fetches the corresponding learning object for each of the nodes and creates a map that maps each node to its
|
||||
|
@ -38,8 +41,13 @@ async function getLearningObjectsForNodes(nodes: Collection<LearningPathNode>):
|
|||
)
|
||||
)
|
||||
);
|
||||
if (Array.from(nullableNodesToLearningObjects.values()).some((it) => it === null)) {
|
||||
throw new Error('At least one of the learning objects on this path could not be found.');
|
||||
|
||||
// Ignore all learning objects that cannot be found such that the rest of the learning path keeps working.
|
||||
for (const [key, value] of nullableNodesToLearningObjects) {
|
||||
if (value === null) {
|
||||
logger.warn(`Learning object ${key.learningObjectHruid}/${key.language}/${key.version} not found!`);
|
||||
nullableNodesToLearningObjects.delete(key);
|
||||
}
|
||||
}
|
||||
return nullableNodesToLearningObjects as Map<LearningPathNode, FilteredLearningObject>;
|
||||
}
|
||||
|
@ -102,7 +110,14 @@ async function convertNode(
|
|||
!personalizedFor || // If we do not want a personalized learning path, keep all transitions
|
||||
isTransitionPossible(trans, optionalJsonStringToObject(lastSubmission?.content)) // Otherwise remove all transitions that aren't possible.
|
||||
)
|
||||
.map((trans, i) => convertTransition(trans, i, nodesToLearningObjects));
|
||||
.map((trans, i) => {
|
||||
try {
|
||||
return convertTransition(trans, i, nodesToLearningObjects)
|
||||
} catch (_: unknown) {
|
||||
logger.error(`Transition could not be resolved: ${JSON.stringify(trans)}`);
|
||||
return undefined; // Do not crash on invalid transitions, just ignore them so the rest of the learning path keeps working.
|
||||
}
|
||||
}).filter(it => it);
|
||||
return {
|
||||
_id: learningObject.uuid,
|
||||
language: learningObject.language,
|
||||
|
|
|
@ -130,13 +130,12 @@ const learningPathService = {
|
|||
* Add a new learning path to the database.
|
||||
* @param dto Learning path DTO from which the learning path will be created.
|
||||
* @param admins Teachers who should become an admin of the learning path.
|
||||
* @param allowReplace If this is set to true and there is already a learning path with the same identifier, it is replaced.
|
||||
* @returns the created learning path.
|
||||
*/
|
||||
async createNewLearningPath(dto: LearningPath, admins: TeacherDTO[], allowReplace = false): Promise<LearningPathEntity> {
|
||||
async createNewLearningPath(dto: LearningPath, admins: TeacherDTO[]): Promise<LearningPathEntity> {
|
||||
const repo = getLearningPathRepository();
|
||||
const path = mapToLearningPath(dto, admins);
|
||||
await repo.save(path, { preventOverwrite: allowReplace });
|
||||
await repo.save(path, { preventOverwrite: true });
|
||||
return path;
|
||||
},
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue