From 71843dad65a5db323d914fd7258595ceede518e8 Mon Sep 17 00:00:00 2001 From: Gerald Schmittinger Date: Wed, 26 Feb 2025 00:39:39 +0100 Subject: [PATCH] feat(backend): Question- en AnswerRepository aangemaakt. Ook functie toegevoegd om submissies te verwijderen. --- .../data/assignments/submission-repository.ts | 9 +++++ .../src/data/questions/answer-repository.ts | 26 ++++++++++++++ .../src/data/questions/question-repository.ts | 36 +++++++++++++++++++ .../src/entities/questions/answer.entity.ts | 2 +- .../src/entities/questions/question.entity.ts | 2 +- 5 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 backend/src/data/questions/answer-repository.ts create mode 100644 backend/src/data/questions/question-repository.ts diff --git a/backend/src/data/assignments/submission-repository.ts b/backend/src/data/assignments/submission-repository.ts index 90988578..fcbd21e1 100644 --- a/backend/src/data/assignments/submission-repository.ts +++ b/backend/src/data/assignments/submission-repository.ts @@ -31,4 +31,13 @@ export class SubmissionRepository extends DwengoEntityRepository { onBehalfOf: group, }, {orderBy: {submissionNumber: "DESC"}}) } + + public deleteSubmissionByLearningObjectAndSubmissionNumber(loId: LearningObjectIdentifier, submissionNumber: number): Promise { + return this.deleteWhere({ + learningObjectHruid: loId.hruid, + learningObjectLanguage: loId.language, + learningObjectVersion: loId.version, + submissionNumber: submissionNumber + }) + } } diff --git a/backend/src/data/questions/answer-repository.ts b/backend/src/data/questions/answer-repository.ts new file mode 100644 index 00000000..4b8b46d7 --- /dev/null +++ b/backend/src/data/questions/answer-repository.ts @@ -0,0 +1,26 @@ +import {DwengoEntityRepository} from "../dwengo-entity-repository"; +import {Answer} from "../../entities/questions/answer.entity"; +import {Question} from "../../entities/questions/question.entity"; +import {Teacher} from "../../entities/users/teacher.entity"; + +export class AnswerRepository extends DwengoEntityRepository { + public createAnswer(answer: {toQuestion: Question, author: Teacher, content: string}): Promise { + let answerEntity = new Answer(); + answerEntity.toQuestion = answer.toQuestion; + answerEntity.author = answer.author; + answerEntity.content = answer.content; + return this.insert(answerEntity); + } + public findAllAnswersToQuestion(question: Question): Promise { + return this.findAll({ + where: { toQuestion: question }, + orderBy: { sequenceNumber: "ASC" } + }); + } + public removeAnswerByQuestionAndSequenceNumber(question: Question, sequenceNumber: number): Promise { + return this.deleteWhere({ + toQuestion: question, + sequenceNumber: sequenceNumber + }); + } +} diff --git a/backend/src/data/questions/question-repository.ts b/backend/src/data/questions/question-repository.ts new file mode 100644 index 00000000..b4429ec5 --- /dev/null +++ b/backend/src/data/questions/question-repository.ts @@ -0,0 +1,36 @@ +import {DwengoEntityRepository} from "../dwengo-entity-repository"; +import {Question} from "../../entities/questions/question.entity"; +import {LearningObjectIdentifier} from "../../entities/content/learning-object-identifier"; +import {Student} from "../../entities/users/student.entity"; + +export class QuestionRepository extends DwengoEntityRepository { + public createQuestion(question: {loId: LearningObjectIdentifier, author: Student, content: string}): Promise { + let questionEntity = new Question(); + questionEntity.learningObjectHruid = question.loId.hruid; + questionEntity.learningObjectLanguage = question.loId.language; + questionEntity.learningObjectVersion = question.loId.version; + questionEntity.author = question.author; + questionEntity.content = question.content; + return this.insert(questionEntity); + } + public findAllQuestionsAboutLearningObject(loId: LearningObjectIdentifier): Promise { + return this.findAll({ + where: { + learningObjectHruid: loId.hruid, + learningObjectLanguage: loId.language, + learningObjectVersion: loId.version + }, + orderBy: { + sequenceNumber: "ASC" + } + }); + } + public removeQuestionByLearningObjectAndSequenceNumber(loId: LearningObjectIdentifier, sequenceNumber: number): Promise { + return this.deleteWhere({ + learningObjectHruid: loId.hruid, + learningObjectLanguage: loId.language, + learningObjectVersion: loId.version, + sequenceNumber: sequenceNumber + }) + } +} diff --git a/backend/src/entities/questions/answer.entity.ts b/backend/src/entities/questions/answer.entity.ts index 6dac636f..cc8d69e7 100644 --- a/backend/src/entities/questions/answer.entity.ts +++ b/backend/src/entities/questions/answer.entity.ts @@ -15,7 +15,7 @@ export class Answer { sequenceNumber!: number; @Property({type: "datetime"}) - timestamp!: Date; + timestamp: Date = new Date(); @Property({type: "text"}) content!: string; diff --git a/backend/src/entities/questions/question.entity.ts b/backend/src/entities/questions/question.entity.ts index 34aa4bb2..36494212 100644 --- a/backend/src/entities/questions/question.entity.ts +++ b/backend/src/entities/questions/question.entity.ts @@ -20,7 +20,7 @@ export class Question { author!: Student; @Property({type: "datetime"}) - timestamp!: Date; + timestamp: Date = new Date(); @Property({type: "text"}) content!: string;