diff --git a/backend/src/services/learning-objects/learning-object-zip-processing-service.ts b/backend/src/services/learning-objects/learning-object-zip-processing-service.ts index a502aecd..409c6c76 100644 --- a/backend/src/services/learning-objects/learning-object-zip-processing-service.ts +++ b/backend/src/services/learning-objects/learning-object-zip-processing-service.ts @@ -3,8 +3,8 @@ import mime from 'mime-types'; import {LearningObject} from "../../entities/content/learning-object.entity"; import {getAttachmentRepository, getLearningObjectRepository} from "../../data/repositories"; import {BadRequestException} from "../../exceptions/bad-request-exception"; -import {LearningObjectMetadata} from "@dwengo-1/common/dist/interfaces/learning-content"; -import { ReturnValue } from '../../entities/content/return-value.entity'; +import {LearningObjectMetadata} from "@dwengo-1/common/interfaces/learning-content"; +import { DwengoContentType } from './processing/content-type'; const METADATA_PATH_REGEX = /.*[/^]metadata\.json$/; const CONTENT_PATH_REGEX = /.*[/^]content\.[a-zA-Z]*$/; @@ -65,11 +65,17 @@ function createLearningObject( ): LearningObject { const learningObjectRepo = getLearningObjectRepository(); const attachmentRepo = getAttachmentRepository(); + + const returnValue = { + callbackUrl: metadata.return_value?.callback_url ?? "", + callbackSchema: metadata.return_value?.callback_schema ? JSON.stringify(metadata.return_value.callback_schema) : "" + }; + const learningObject = learningObjectRepo.create({ admins: [], available: metadata.available ?? true, content: content, - contentType: metadata.content_type, + contentType: metadata.content_type as DwengoContentType, copyright: metadata.copyright ?? "", description: metadata.description ?? "", educationalGoals: metadata.educational_goals ?? [], @@ -77,7 +83,7 @@ function createLearningObject( keywords: metadata.keywords, language: metadata.language, license: metadata.license ?? "", - returnValue: metadata.return_value ?? new ReturnValue(), + returnValue, skosConcepts: metadata.skos_concepts ?? [], teacherExclusive: metadata.teacher_exclusive, title: metadata.title, @@ -93,7 +99,7 @@ function createLearningObject( return learningObject; } -async function processMetadataJson(file: unzipper.File): LearningObjectMetadata { +async function processMetadataJson(file: unzipper.File): Promise { const buf = await file.buffer(); const content = buf.toString(); return JSON.parse(content); diff --git a/backend/src/services/learning-paths/database-learning-path-provider.ts b/backend/src/services/learning-paths/database-learning-path-provider.ts index 0bcd0922..1bb3be95 100644 --- a/backend/src/services/learning-paths/database-learning-path-provider.ts +++ b/backend/src/services/learning-paths/database-learning-path-provider.ts @@ -117,7 +117,7 @@ async function convertNode( 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); + }).filter(it => it !== undefined); return { _id: learningObject.uuid, language: learningObject.language, diff --git a/backend/src/services/teachers.ts b/backend/src/services/teachers.ts index 8f41df8b..8857de99 100644 --- a/backend/src/services/teachers.ts +++ b/backend/src/services/teachers.ts @@ -124,7 +124,7 @@ export async function getTeacherQuestions(username: string, full: boolean): Prom // Find all learning objects that this teacher manages const learningObjectRepository: LearningObjectRepository = getLearningObjectRepository(); - const learningObjects: LearningObject[] = await learningObjectRepository.findAllByAdmin(teacher); + const learningObjects: LearningObject[] = await learningObjectRepository.findAllByAdmin(teacher.username); if (!learningObjects || learningObjects.length === 0) { return []; diff --git a/common/src/interfaces/learning-content.ts b/common/src/interfaces/learning-content.ts index a3e5dacb..453d1bac 100644 --- a/common/src/interfaces/learning-content.ts +++ b/common/src/interfaces/learning-content.ts @@ -79,6 +79,8 @@ export interface LearningObjectMetadata { target_ages: number[]; content_type: string; // Markdown, image, etc. content_location?: string; + copyright?: string; + license?: string; skos_concepts?: string[]; return_value?: ReturnValue; }