diff --git a/backend/src/data/dwengo-entity-repository.ts b/backend/src/data/dwengo-entity-repository.ts index 368f3a2c..e29d9ede 100644 --- a/backend/src/data/dwengo-entity-repository.ts +++ b/backend/src/data/dwengo-entity-repository.ts @@ -4,13 +4,13 @@ export abstract class DwengoEntityRepository< T extends object, > extends EntityRepository { public async save(entity: T) { - let em = this.getEntityManager(); + const em = this.getEntityManager(); em.persist(entity); await em.flush(); } public async deleteWhere(query: FilterQuery) { - let toDelete = await this.findOne(query); - let em = this.getEntityManager(); + const toDelete = await this.findOne(query); + const em = this.getEntityManager(); if (toDelete) { em.remove(toDelete); await em.flush(); diff --git a/backend/src/data/questions/answer-repository.ts b/backend/src/data/questions/answer-repository.ts index 6a2629f4..6c45211c 100644 --- a/backend/src/data/questions/answer-repository.ts +++ b/backend/src/data/questions/answer-repository.ts @@ -9,7 +9,7 @@ export class AnswerRepository extends DwengoEntityRepository { author: Teacher; content: string; }): Promise { - let answerEntity = new Answer(); + const answerEntity = new Answer(); answerEntity.toQuestion = answer.toQuestion; answerEntity.author = answer.author; answerEntity.content = answer.content; diff --git a/backend/src/data/questions/question-repository.ts b/backend/src/data/questions/question-repository.ts index 517305f1..8852a9ba 100644 --- a/backend/src/data/questions/question-repository.ts +++ b/backend/src/data/questions/question-repository.ts @@ -9,7 +9,7 @@ export class QuestionRepository extends DwengoEntityRepository { author: Student; content: string; }): Promise { - let questionEntity = new Question(); + const questionEntity = new Question(); questionEntity.learningObjectHruid = question.loId.hruid; questionEntity.learningObjectLanguage = question.loId.language; questionEntity.learningObjectVersion = question.loId.version; diff --git a/backend/src/entities/assignments/assignment.entity.ts b/backend/src/entities/assignments/assignment.entity.ts index e883632b..7909b107 100644 --- a/backend/src/entities/assignments/assignment.entity.ts +++ b/backend/src/entities/assignments/assignment.entity.ts @@ -12,7 +12,7 @@ import { Language } from '../content/language.js'; @Entity() export class Assignment { - @ManyToOne({ entity: () => Class, primary: true }) + @ManyToOne({ entity: () => {return Class}, primary: true }) within!: Class; @PrimaryKey({ type: 'number' }) @@ -27,9 +27,9 @@ export class Assignment { @Property({ type: 'string' }) learningPathHruid!: string; - @Enum({ items: () => Language }) + @Enum({ items: () => {return Language} }) learningPathLanguage!: Language; - @OneToMany({ entity: () => Group, mappedBy: 'assignment' }) + @OneToMany({ entity: () => {return Group}, mappedBy: 'assignment' }) groups!: Group[]; } diff --git a/backend/src/entities/assignments/group.entity.ts b/backend/src/entities/assignments/group.entity.ts index 80da7d8b..a68eb5a0 100644 --- a/backend/src/entities/assignments/group.entity.ts +++ b/backend/src/entities/assignments/group.entity.ts @@ -4,12 +4,12 @@ import { Student } from '../users/student.entity.js'; @Entity() export class Group { - @ManyToOne({ entity: () => Assignment, primary: true }) + @ManyToOne({ entity: () => {return Assignment}, primary: true }) assignment!: Assignment; @PrimaryKey({ type: 'integer' }) groupNumber!: number; - @ManyToMany({ entity: () => Student }) + @ManyToMany({ entity: () => {return Student} }) members!: Student[]; } diff --git a/backend/src/entities/assignments/submission.entity.ts b/backend/src/entities/assignments/submission.entity.ts index 02cbeeae..bd0936a1 100644 --- a/backend/src/entities/assignments/submission.entity.ts +++ b/backend/src/entities/assignments/submission.entity.ts @@ -8,7 +8,7 @@ export class Submission { @PrimaryKey({ type: 'string' }) learningObjectHruid!: string; - @Enum({ items: () => Language, primary: true }) + @Enum({ items: () => {return Language}, primary: true }) learningObjectLanguage!: Language; @PrimaryKey({ type: 'string' }) @@ -17,13 +17,13 @@ export class Submission { @PrimaryKey({ type: 'integer' }) submissionNumber!: number; - @ManyToOne({ entity: () => Student }) + @ManyToOne({ entity: () => {return Student} }) submitter!: Student; @Property({ type: 'datetime' }) submissionTime!: Date; - @ManyToOne({ entity: () => Group, nullable: true }) + @ManyToOne({ entity: () => {return Group}, nullable: true }) onBehalfOf?: Group; @Property({ type: 'json' }) diff --git a/backend/src/entities/classes/class-join-request.entity.ts b/backend/src/entities/classes/class-join-request.entity.ts index 00cb5185..8e88999c 100644 --- a/backend/src/entities/classes/class-join-request.entity.ts +++ b/backend/src/entities/classes/class-join-request.entity.ts @@ -4,13 +4,13 @@ import { Class } from './class.entity'; @Entity() export class ClassJoinRequest { - @ManyToOne({ entity: () => Student, primary: true }) + @ManyToOne({ entity: () => {return Student}, primary: true }) requester!: Student; - @ManyToOne({ entity: () => Class, primary: true }) + @ManyToOne({ entity: () => {return Class}, primary: true }) class!: Class; - @Enum(() => ClassJoinRequestStatus) + @Enum(() => {return ClassJoinRequestStatus}) status!: ClassJoinRequestStatus; } diff --git a/backend/src/entities/classes/class.entity.ts b/backend/src/entities/classes/class.entity.ts index 1f5835d2..2ad98c84 100644 --- a/backend/src/entities/classes/class.entity.ts +++ b/backend/src/entities/classes/class.entity.ts @@ -17,9 +17,9 @@ export class Class { @Property({ type: 'string' }) displayName!: string; - @ManyToMany(() => Teacher) + @ManyToMany(() => {return Teacher}) teachers!: Collection; - @ManyToMany(() => Student) + @ManyToMany(() => {return Student}) students!: Collection; } diff --git a/backend/src/entities/classes/teacher-invitation.entity.ts b/backend/src/entities/classes/teacher-invitation.entity.ts index 375bf719..feba8fc3 100644 --- a/backend/src/entities/classes/teacher-invitation.entity.ts +++ b/backend/src/entities/classes/teacher-invitation.entity.ts @@ -7,12 +7,12 @@ import { Class } from './class.entity.js'; */ @Entity() export class TeacherInvitation { - @ManyToOne({ entity: () => Teacher, primary: true }) + @ManyToOne({ entity: () => {return Teacher}, primary: true }) sender!: Teacher; - @ManyToOne({ entity: () => Teacher, primary: true }) + @ManyToOne({ entity: () => {return Teacher}, primary: true }) receiver!: Teacher; - @ManyToOne({ entity: () => Class, primary: true }) + @ManyToOne({ entity: () => {return Class}, primary: true }) class!: Class; } diff --git a/backend/src/entities/content/attachment.entity.ts b/backend/src/entities/content/attachment.entity.ts index 5a77d4b7..2ead7262 100644 --- a/backend/src/entities/content/attachment.entity.ts +++ b/backend/src/entities/content/attachment.entity.ts @@ -3,7 +3,7 @@ import { LearningObject } from './learning-object.entity.js'; @Entity() export class Attachment { - @ManyToOne({ entity: () => LearningObject, primary: true }) + @ManyToOne({ entity: () => {return LearningObject}, primary: true }) learningObject!: LearningObject; @PrimaryKey({ type: 'integer' }) diff --git a/backend/src/entities/content/learning-object.entity.ts b/backend/src/entities/content/learning-object.entity.ts index aeee268d..c5bfe08f 100644 --- a/backend/src/entities/content/learning-object.entity.ts +++ b/backend/src/entities/content/learning-object.entity.ts @@ -17,13 +17,13 @@ export class LearningObject { @PrimaryKey({ type: 'string' }) hruid!: string; - @Enum({ items: () => Language, primary: true }) + @Enum({ items: () => {return Language}, primary: true }) language!: Language; @PrimaryKey({ type: 'string' }) version: string = '1'; - @ManyToMany({ entity: () => Teacher }) + @ManyToMany({ entity: () => {return Teacher} }) admins!: Teacher[]; @Property({ type: 'string' }) @@ -47,7 +47,7 @@ export class LearningObject { @Property({ type: 'array' }) skosConcepts!: string[]; - @Embedded({ entity: () => EducationalGoal, array: true }) + @Embedded({ entity: () => {return EducationalGoal}, array: true }) educationalGoals: EducationalGoal[] = []; @Property({ type: 'string' }) @@ -62,7 +62,7 @@ export class LearningObject { @Property({ type: 'integer' }) estimatedTime!: number; - @Embedded({ entity: () => ReturnValue }) + @Embedded({ entity: () => {return ReturnValue} }) returnValue!: ReturnValue; @Property({ type: 'bool' }) @@ -71,7 +71,7 @@ export class LearningObject { @Property({ type: 'string', nullable: true }) contentLocation?: string; - @OneToMany({ entity: () => Attachment, mappedBy: 'learningObject' }) + @OneToMany({ entity: () => {return Attachment}, mappedBy: 'learningObject' }) attachments: Attachment[] = []; @Property({ type: 'blob' }) diff --git a/backend/src/entities/content/learning-path.entity.ts b/backend/src/entities/content/learning-path.entity.ts index f426cdfe..f758dace 100644 --- a/backend/src/entities/content/learning-path.entity.ts +++ b/backend/src/entities/content/learning-path.entity.ts @@ -16,10 +16,10 @@ export class LearningPath { @PrimaryKey({ type: 'string' }) hruid!: string; - @Enum({ items: () => Language, primary: true }) + @Enum({ items: () => {return Language}, primary: true }) language!: Language; - @ManyToMany({ entity: () => Teacher }) + @ManyToMany({ entity: () => {return Teacher} }) admins!: Teacher[]; @Property({ type: 'string' }) @@ -31,7 +31,7 @@ export class LearningPath { @Property({ type: 'blob' }) image!: string; - @Embedded({ entity: () => LearningPathNode, array: true }) + @Embedded({ entity: () => {return LearningPathNode}, array: true }) nodes: LearningPathNode[] = []; } @@ -40,7 +40,7 @@ export class LearningPathNode { @Property({ type: 'string' }) learningObjectHruid!: string; - @Enum({ items: () => Language }) + @Enum({ items: () => {return Language} }) language!: Language; @Property({ type: 'string' }) @@ -52,7 +52,7 @@ export class LearningPathNode { @Property({ type: 'bool' }) startNode!: boolean; - @Embedded({ entity: () => LearningPathTransition, array: true }) + @Embedded({ entity: () => {return LearningPathTransition}, array: true }) transitions!: LearningPathTransition[]; } @@ -61,6 +61,6 @@ export class LearningPathTransition { @Property({ type: 'string' }) condition!: string; - @OneToOne({ entity: () => LearningPathNode }) + @OneToOne({ entity: () => {return LearningPathNode} }) next!: LearningPathNode; } diff --git a/backend/src/entities/questions/answer.entity.ts b/backend/src/entities/questions/answer.entity.ts index b15dce71..2690d50d 100644 --- a/backend/src/entities/questions/answer.entity.ts +++ b/backend/src/entities/questions/answer.entity.ts @@ -4,10 +4,10 @@ import { Teacher } from '../users/teacher.entity'; @Entity() export class Answer { - @ManyToOne({ entity: () => Teacher, primary: true }) + @ManyToOne({ entity: () => {return Teacher}, primary: true }) author!: Teacher; - @ManyToOne({ entity: () => Question, primary: true }) + @ManyToOne({ entity: () => {return Question}, primary: true }) toQuestion!: Question; @PrimaryKey({ type: 'integer' }) diff --git a/backend/src/entities/questions/question.entity.ts b/backend/src/entities/questions/question.entity.ts index 6c0d07e5..5830c816 100644 --- a/backend/src/entities/questions/question.entity.ts +++ b/backend/src/entities/questions/question.entity.ts @@ -7,7 +7,7 @@ export class Question { @PrimaryKey({ type: 'string' }) learningObjectHruid!: string; - @Enum({ items: () => Language, primary: true }) + @Enum({ items: () => {return Language}, primary: true }) learningObjectLanguage!: Language; @PrimaryKey({ type: 'string' }) @@ -16,7 +16,7 @@ export class Question { @PrimaryKey({ type: 'integer' }) sequenceNumber!: number; - @ManyToOne({ entity: () => Student }) + @ManyToOne({ entity: () => {return Student} }) author!: Student; @Property({ type: 'datetime' }) diff --git a/backend/src/entities/users/student.entity.ts b/backend/src/entities/users/student.entity.ts index dc791adc..ccfa7dfc 100644 --- a/backend/src/entities/users/student.entity.ts +++ b/backend/src/entities/users/student.entity.ts @@ -4,12 +4,12 @@ import { Class } from '../classes/class.entity.js'; import { Group } from '../assignments/group.entity.js'; import { StudentRepository } from '../../data/users/student-repository.js'; -@Entity({ repository: () => StudentRepository }) +@Entity({ repository: () => {return StudentRepository} }) export class Student extends User { - @ManyToMany(() => Class) + @ManyToMany(() => {return Class}) classes!: Collection; - @ManyToMany(() => Group) + @ManyToMany(() => {return Group}) groups!: Collection; constructor( diff --git a/backend/src/entities/users/teacher.entity.ts b/backend/src/entities/users/teacher.entity.ts index 2327527c..eaaa8327 100644 --- a/backend/src/entities/users/teacher.entity.ts +++ b/backend/src/entities/users/teacher.entity.ts @@ -4,6 +4,6 @@ import { Class } from '../classes/class.entity.js'; @Entity() export class Teacher extends User { - @ManyToMany(() => Class) + @ManyToMany(() => {return Class}) classes!: Collection; } diff --git a/backend/src/mikro-orm.config.ts b/backend/src/mikro-orm.config.ts index da118827..88996cf9 100644 --- a/backend/src/mikro-orm.config.ts +++ b/backend/src/mikro-orm.config.ts @@ -15,9 +15,9 @@ function config(testingMode: boolean = false): Options { // Workaround: vitest: `TypeError: Unknown file extension ".ts"` (ERR_UNKNOWN_FILE_EXTENSION) // (see https://mikro-orm.io/docs/guide/project-setup#testing-the-endpoint) - dynamicImportProvider: (id) => import(id), + dynamicImportProvider: (id) => {return import(id)}, }; - } else { + } return { driver: PostgreSqlDriver, host: getEnvVar(EnvVars.DbHost), @@ -29,7 +29,7 @@ function config(testingMode: boolean = false): Options { entitiesTs: entitiesTs, debug: true, }; - } + } export default config; diff --git a/backend/src/routes/assignment.ts b/backend/src/routes/assignment.ts index fcb6e9da..eb49144f 100644 --- a/backend/src/routes/assignment.ts +++ b/backend/src/routes/assignment.ts @@ -1,7 +1,7 @@ import express from 'express' const router = express.Router(); -// root endpoint used to search objects +// Root endpoint used to search objects router.get('/', (req, res) => { res.json({ assignments: [ @@ -11,7 +11,7 @@ router.get('/', (req, res) => { }); }); -// information about an assignment with id 'id' +// Information about an assignment with id 'id' router.get('/:id', (req, res) => { res.json({ id: req.params.id, diff --git a/backend/src/routes/class.ts b/backend/src/routes/class.ts index e554a7f2..fa7a2310 100644 --- a/backend/src/routes/class.ts +++ b/backend/src/routes/class.ts @@ -1,7 +1,7 @@ import express from 'express' const router = express.Router(); -// root endpoint used to search objects +// Root endpoint used to search objects router.get('/', (req, res) => { res.json({ classes: [ @@ -11,7 +11,7 @@ router.get('/', (req, res) => { }); }); -// information about an class with id 'id' +// Information about an class with id 'id' router.get('/:id', (req, res) => { res.json({ id: req.params.id, diff --git a/backend/src/routes/group.ts b/backend/src/routes/group.ts index e55dddd1..e951a8a7 100644 --- a/backend/src/routes/group.ts +++ b/backend/src/routes/group.ts @@ -1,7 +1,7 @@ import express from 'express' const router = express.Router(); -// root endpoint used to search objects +// Root endpoint used to search objects router.get('/', (req, res) => { res.json({ groups: [ @@ -11,20 +11,20 @@ router.get('/', (req, res) => { }); }); -// information about a group (members, ... [TODO DOC]) +// Information about a group (members, ... [TODO DOC]) router.get('/:id', (req, res) => { res.json({ id: req.params.id, assignment: '0', students: [ '0' ], submissions: [ '0' ], - // reference to other endpoint - // should be less hardcoded + // Reference to other endpoint + // Should be less hardcoded questions: `/group/${req.params.id}/question`, }); }) -// the list of questions a group has made +// The list of questions a group has made router.get('/:id/question', (req, res) => { res.json({ questions: [ '0' ], diff --git a/backend/src/routes/login.ts b/backend/src/routes/login.ts index 550e6d93..bc2ed3d8 100644 --- a/backend/src/routes/login.ts +++ b/backend/src/routes/login.ts @@ -1,11 +1,11 @@ import express from 'express' const router = express.Router(); -// returns login paths for IDP +// Returns login paths for IDP router.get('/', (req, res) => { res.json({ - // dummy variables, needs to be changed - // with IDP endpoints + // Dummy variables, needs to be changed + // With IDP endpoints leerkracht: '/login-leerkracht', leerling: '/login-leerling', }); diff --git a/backend/src/routes/question.ts b/backend/src/routes/question.ts index 25d168b7..040f742d 100644 --- a/backend/src/routes/question.ts +++ b/backend/src/routes/question.ts @@ -1,7 +1,7 @@ import express from 'express' const router = express.Router(); -// root endpoint used to search objects +// Root endpoint used to search objects router.get('/', (req, res) => { res.json({ questions: [ @@ -11,7 +11,7 @@ router.get('/', (req, res) => { }); }); -// information about an question with id 'id' +// Information about an question with id 'id' router.get('/:id', (req, res) => { res.json({ id: req.params.id, diff --git a/backend/src/routes/student.ts b/backend/src/routes/student.ts index a11c1fbc..bc3f588b 100644 --- a/backend/src/routes/student.ts +++ b/backend/src/routes/student.ts @@ -1,7 +1,7 @@ import express from 'express' const router = express.Router(); -// root endpoint used to search objects +// Root endpoint used to search objects router.get('/', (req, res) => { res.json({ students: [ @@ -11,7 +11,7 @@ router.get('/', (req, res) => { }); }); -// information about a student's profile +// Information about a student's profile router.get('/:id', (req, res) => { res.json({ id: req.params.id, @@ -27,14 +27,14 @@ router.get('/:id', (req, res) => { }); }); -// the list of classes a student is in +// The list of classes a student is in router.get('/:id/classes', (req, res) => { res.json({ classes: [ '0' ], }); }) -// the list of submissions a student has made +// The list of submissions a student has made router.get('/:id/submissions', (req, res) => { res.json({ submissions: [ '0' ], @@ -42,14 +42,14 @@ router.get('/:id/submissions', (req, res) => { }) -// the list of assignments a student has +// The list of assignments a student has router.get('/:id/assignments', (req, res) => { res.json({ assignments: [ '0' ], }); }) -// the list of groups a student is in +// The list of groups a student is in router.get('/:id/groups', (req, res) => { res.json({ groups: [ '0' ], diff --git a/backend/src/routes/submission.ts b/backend/src/routes/submission.ts index 8d09cf8e..98acc842 100644 --- a/backend/src/routes/submission.ts +++ b/backend/src/routes/submission.ts @@ -1,7 +1,7 @@ import express from 'express' const router = express.Router(); -// root endpoint used to search objects +// Root endpoint used to search objects router.get('/', (req, res) => { res.json({ submissions: [ @@ -11,7 +11,7 @@ router.get('/', (req, res) => { }); }); -// information about an submission with id 'id' +// Information about an submission with id 'id' router.get('/:id', (req, res) => { res.json({ id: req.params.id, diff --git a/backend/src/routes/teacher.ts b/backend/src/routes/teacher.ts index 37b3b04b..f9de3aa5 100644 --- a/backend/src/routes/teacher.ts +++ b/backend/src/routes/teacher.ts @@ -1,7 +1,7 @@ import express from 'express' const router = express.Router(); -// root endpoint used to search objects +// Root endpoint used to search objects router.get('/', (req, res) => { res.json({ teachers: [ @@ -11,7 +11,7 @@ router.get('/', (req, res) => { }); }); -// information about a teacher +// Information about a teacher router.get('/:id', (req, res) => { res.json({ id: req.params.id, @@ -27,7 +27,7 @@ router.get('/:id', (req, res) => { }); }) -// the questions students asked a teacher +// The questions students asked a teacher router.get('/:id/questions', (req, res) => { res.json({ questions: [ @@ -36,7 +36,7 @@ router.get('/:id/questions', (req, res) => { }); }); -// invitations to other classes a teacher received +// Invitations to other classes a teacher received router.get('/:id/invitations', (req, res) => { res.json({ invitations: [ @@ -45,7 +45,7 @@ router.get('/:id/invitations', (req, res) => { }); }); -// a list with ids of classes a teacher is in +// A list with ids of classes a teacher is in router.get('/:id/classes', (req, res) => { res.json({ classes: [ diff --git a/backend/tests/data/users.test.ts b/backend/tests/data/users.test.ts index c7cc875d..a982151e 100644 --- a/backend/tests/data/users.test.ts +++ b/backend/tests/data/users.test.ts @@ -18,7 +18,7 @@ describe("StudentRepository", () => { it("should return the queried student after he was added", async () => { await studentRepository.insert(new Student(username, firstName, lastName)); - let retrievedStudent = await studentRepository.findByUsername(username); + const retrievedStudent = await studentRepository.findByUsername(username); expect(retrievedStudent).toBeTruthy(); expect(retrievedStudent?.firstName).toBe(firstName); expect(retrievedStudent?.lastName).toBe(lastName); @@ -27,7 +27,7 @@ describe("StudentRepository", () => { it("should no longer return the queried student after he was removed again", async () => { await studentRepository.deleteByUsername(username); - let retrievedStudent = await studentRepository.findByUsername(username); + const retrievedStudent = await studentRepository.findByUsername(username); expect(retrievedStudent).toBeNull(); }); });