style: fix linting issues met ESLint

This commit is contained in:
Lint Action 2025-03-13 17:45:28 +00:00
parent b5390258e3
commit e78849f568
21 changed files with 64 additions and 116 deletions

View file

@ -83,7 +83,7 @@ export async function getGroupSubmissionsHandler(
res: Response, res: Response,
): Promise<void> { ): Promise<void> {
const classId = req.params.classid; const classId = req.params.classid;
// const full = req.query.full === 'true'; // Const full = req.query.full === 'true';
const assignmentId = +req.params.assignmentid; const assignmentId = +req.params.assignmentid;

View file

@ -32,7 +32,7 @@ function getQuestionId(req: Request, res: Response): QuestionId | null {
const learningObjectIdentifier = getObjectId(req,res); const learningObjectIdentifier = getObjectId(req,res);
if (!learningObjectIdentifier) if (!learningObjectIdentifier)
return null {return null}
return { return {
learningObjectIdentifier, learningObjectIdentifier,
@ -48,28 +48,28 @@ export async function getAllQuestionsHandler(
const full = req.query.full === 'true'; const full = req.query.full === 'true';
if (!objectId) if (!objectId)
return {return}
const questions = await getAllQuestions(objectId, full); const questions = await getAllQuestions(objectId, full);
if (!questions) if (!questions)
res.status(404).json({ error: `Questions not found.` }); {res.status(404).json({ error: `Questions not found.` });}
else else
res.json(questions); {res.json(questions);}
} }
export async function getQuestionHandler(req: Request, res: Response): Promise<void> { export async function getQuestionHandler(req: Request, res: Response): Promise<void> {
const questionId = getQuestionId(req, res); const questionId = getQuestionId(req, res);
if (!questionId) if (!questionId)
return {return}
const question = await getQuestion(questionId); const question = await getQuestion(questionId);
if (!question) if (!question)
res.status(404).json({ error: `Question not found.` }); {res.status(404).json({ error: `Question not found.` });}
else else
res.json(question) {res.json(question)}
} }
export async function getQuestionAnswersHandler(req: Request, res: Response): Promise<void> { export async function getQuestionAnswersHandler(req: Request, res: Response): Promise<void> {
@ -77,14 +77,14 @@ export async function getQuestionAnswersHandler(req: Request, res: Response): Pr
const full = req.query.full === 'true'; const full = req.query.full === 'true';
if (!questionId) if (!questionId)
return {return}
const answers = getAnswersByQuestion(questionId, full); const answers = getAnswersByQuestion(questionId, full);
if (!answers) if (!answers)
res.status(404).json({ error: `Questions not found.` }); {res.status(404).json({ error: `Questions not found.` });}
else else
res.json(answers) {res.json(answers)}
} }
export async function createQuestionHandler(req: Request, res: Response): Promise<void> { export async function createQuestionHandler(req: Request, res: Response): Promise<void> {
@ -98,23 +98,23 @@ export async function createQuestionHandler(req: Request, res: Response): Promis
const question = await createQuestion(questionDTO); const question = await createQuestion(questionDTO);
if (!question) if (!question)
res.status(400).json({error: 'Could not add question'}); {res.status(400).json({error: 'Could not add question'});}
else else
res.json(question) {res.json(question)}
} }
export async function deleteQuestionHandler(req: Request, res: Response): Promise<void> { export async function deleteQuestionHandler(req: Request, res: Response): Promise<void> {
const questionId = getQuestionId(req, res); const questionId = getQuestionId(req, res);
if (!questionId) if (!questionId)
return {return}
const question = await deleteQuestion(questionId); const question = await deleteQuestion(questionId);
if (!question) if (!question)
res.status(400).json({error: 'Could not find nor delete question'}); {res.status(400).json({error: 'Could not find nor delete question'});}
else else
res.json(question) {res.json(question)}
} }

View file

@ -20,8 +20,8 @@ export async function getSubmissionHandler(
return; return;
} }
let lang = languageMap[req.query.language as string] || Language.Dutch; const lang = languageMap[req.query.language as string] || Language.Dutch;
let version = (req.query.version || 1) as number; const version = (req.query.version || 1) as number;
const submission = await getSubmission(lohruid, lang, version, submissionNumber); const submission = await getSubmission(lohruid, lang, version, submissionNumber);
@ -39,22 +39,22 @@ export async function createSubmissionHandler(req: Request, res: Response){
const submission = await createSubmission(submissionDTO); const submission = await createSubmission(submissionDTO);
if (!submission) if (!submission)
res.status(404).json({ error: 'Submission not added' }); {res.status(404).json({ error: 'Submission not added' });}
else else
res.json(submission) {res.json(submission)}
} }
export async function deleteSubmissionHandler(req: Request, res: Response){ export async function deleteSubmissionHandler(req: Request, res: Response){
const hruid = req.params.hruid; const hruid = req.params.hruid;
const submissionNumber = +req.params.id; const submissionNumber = +req.params.id;
let lang = languageMap[req.query.language as string] || Language.Dutch; const lang = languageMap[req.query.language as string] || Language.Dutch;
let version = (req.query.version || 1) as number; const version = (req.query.version || 1) as number;
const submission = await deleteSubmission(hruid, lang, version, submissionNumber); const submission = await deleteSubmission(hruid, lang, version, submissionNumber);
if (!submission) if (!submission)
res.status(404).json({ error: 'Submission not found' }); {res.status(404).json({ error: 'Submission not found' });}
else else
res.json(submission) {res.json(submission)}
} }

View file

@ -50,13 +50,11 @@ export class QuestionRepository extends DwengoEntityRepository<Question> {
public async findAllByLearningObjects( public async findAllByLearningObjects(
learningObjects: LearningObject[] learningObjects: LearningObject[]
): Promise<Question[]> { ): Promise<Question[]> {
const objectIdentifiers = learningObjects.map((lo) => { const objectIdentifiers = learningObjects.map((lo) => ({
return {
learningObjectHruid: lo.hruid, learningObjectHruid: lo.hruid,
learningObjectLanguage: lo.language, learningObjectLanguage: lo.language,
learningObjectVersion: lo.version, learningObjectVersion: lo.version,
}; }));
});
return this.findAll({ return this.findAll({
where: { $or: objectIdentifiers }, where: { $or: objectIdentifiers },

View file

@ -1,9 +1,9 @@
import { Student } from '../../entities/users/student.entity.js'; import { Student } from '../../entities/users/student.entity.js';
import { User } from '../../entities/users/user.entity.js'; import { User } from '../../entities/users/user.entity.js';
import { DwengoEntityRepository } from '../dwengo-entity-repository.js'; import { DwengoEntityRepository } from '../dwengo-entity-repository.js';
// import { UserRepository } from './user-repository.js'; // Import { UserRepository } from './user-repository.js';
// export class StudentRepository extends UserRepository<Student> {} // Export class StudentRepository extends UserRepository<Student> {}
export class StudentRepository extends DwengoEntityRepository<Student> { export class StudentRepository extends DwengoEntityRepository<Student> {
public findByUsername(username: string): Promise<Student | null> { public findByUsername(username: string): Promise<Student | null> {

View file

@ -13,15 +13,11 @@ import { Language } from '../content/language.js';
import { AssignmentRepository } from '../../data/assignments/assignment-repository.js'; import { AssignmentRepository } from '../../data/assignments/assignment-repository.js';
@Entity({ @Entity({
repository: () => { repository: () => AssignmentRepository,
return AssignmentRepository;
},
}) })
export class Assignment { export class Assignment {
@ManyToOne({ @ManyToOne({
entity: () => { entity: () => Class,
return Class;
},
primary: true, primary: true,
}) })
within!: Class; within!: Class;
@ -39,16 +35,12 @@ export class Assignment {
learningPathHruid!: string; learningPathHruid!: string;
@Enum({ @Enum({
items: () => { items: () => Language,
return Language;
},
}) })
learningPathLanguage!: Language; learningPathLanguage!: Language;
@OneToMany({ @OneToMany({
entity: () => { entity: () => Group,
return Group;
},
mappedBy: 'assignment', mappedBy: 'assignment',
}) })
groups!: Group[]; groups!: Group[];

View file

@ -4,9 +4,7 @@ import { Student } from '../users/student.entity.js';
import { GroupRepository } from '../../data/assignments/group-repository.js'; import { GroupRepository } from '../../data/assignments/group-repository.js';
@Entity({ @Entity({
repository: () => { repository: () => GroupRepository,
return GroupRepository;
},
}) })
export class Group { export class Group {
@ManyToOne({ @ManyToOne({

View file

@ -4,9 +4,7 @@ import { Class } from './class.entity.js';
import { ClassJoinRequestRepository } from '../../data/classes/class-join-request-repository.js'; import { ClassJoinRequestRepository } from '../../data/classes/class-join-request-repository.js';
@Entity({ @Entity({
repository: () => { repository: () => ClassJoinRequestRepository,
return ClassJoinRequestRepository;
},
}) })
export class ClassJoinRequest { export class ClassJoinRequest {
@ManyToOne({ @ManyToOne({

View file

@ -11,9 +11,7 @@ import { Student } from '../users/student.entity.js';
import { ClassRepository } from '../../data/classes/class-repository.js'; import { ClassRepository } from '../../data/classes/class-repository.js';
@Entity({ @Entity({
repository: () => { repository: () => ClassRepository,
return ClassRepository;
},
}) })
export class Class { export class Class {
@PrimaryKey() @PrimaryKey()

View file

@ -3,15 +3,11 @@ import { LearningObject } from './learning-object.entity.js';
import { AttachmentRepository } from '../../data/content/attachment-repository.js'; import { AttachmentRepository } from '../../data/content/attachment-repository.js';
@Entity({ @Entity({
repository: () => { repository: () => AttachmentRepository,
return AttachmentRepository;
},
}) })
export class Attachment { export class Attachment {
@ManyToOne({ @ManyToOne({
entity: () => { entity: () => LearningObject,
return LearningObject;
},
primary: true, primary: true,
}) })
learningObject!: LearningObject; learningObject!: LearningObject;

View file

@ -21,12 +21,8 @@ export function mapToClassDTO(cls: Class): ClassDTO {
return { return {
id: cls.classId!, id: cls.classId!,
displayName: cls.displayName, displayName: cls.displayName,
teachers: cls.teachers.map((teacher) => { teachers: cls.teachers.map((teacher) => teacher.username),
return teacher.username; students: cls.students.map((student) => student.username),
}),
students: cls.students.map((student) => {
return student.username;
}),
joinRequests: [], // TODO joinRequests: [], // TODO
}; };
} }

View file

@ -20,8 +20,6 @@ export function mapToGroupDTOId(group: Group): GroupDTO {
return { return {
assignment: group.assignment.id!, assignment: group.assignment.id!,
groupNumber: group.groupNumber!, groupNumber: group.groupNumber!,
members: group.members.map((member) => { members: group.members.map((member) => member.username),
return member.username;
}),
}; };
} }

View file

@ -36,10 +36,10 @@ export function mapToSubmission(submissionDTO: SubmissionDTO): Submission {
submission.learningObjectHruid = submissionDTO.learningObjectHruid; submission.learningObjectHruid = submissionDTO.learningObjectHruid;
submission.learningObjectLanguage = submissionDTO.learningObjectLanguage; submission.learningObjectLanguage = submissionDTO.learningObjectLanguage;
submission.learningObjectVersion = submissionDTO.learningObjectVersion; submission.learningObjectVersion = submissionDTO.learningObjectVersion;
// submission.submissionNumber = submissionDTO.submissionNumber; // Submission.submissionNumber = submissionDTO.submissionNumber;
submission.submitter = mapToStudent(submissionDTO.submitter) ; submission.submitter = mapToStudent(submissionDTO.submitter) ;
// submission.submissionTime = submissionDTO.time; // Submission.submissionTime = submissionDTO.time;
// submission.onBehalfOf = submissionDTO.group!; // Submission.onBehalfOf = submissionDTO.group!;
// TODO fix group // TODO fix group
submission.content = submissionDTO.content; submission.content = submissionDTO.content;

View file

@ -7,7 +7,7 @@ import {
} from "../controllers/questions.js"; } from "../controllers/questions.js";
const router = express.Router({ mergeParams: true }); const router = express.Router({ mergeParams: true });
// query language // Query language
// Root endpoint used to search objects // Root endpoint used to search objects
router.get('/', getAllQuestionsHandler); router.get('/', getAllQuestionsHandler);

View file

@ -29,9 +29,7 @@ export async function getAllClasses(
if (full) { if (full) {
return classes.map(mapToClassDTO); return classes.map(mapToClassDTO);
} }
return classes.map((cls) => { return classes.map((cls) => cls.classId!);
return cls.classId!;
});
} }
export async function createClass(classData: ClassDTO): Promise<Class | null> { export async function createClass(classData: ClassDTO): Promise<Class | null> {
@ -45,7 +43,7 @@ export async function createClass(classData: ClassDTO): Promise<Class | null> {
const students = (await Promise.all(studentUsernames.map(id => studentRepository.findByUsername(id)))) const students = (await Promise.all(studentUsernames.map(id => studentRepository.findByUsername(id))))
.filter(student => student != null); .filter(student => student != null);
//const cls = mapToClass(classData, teachers, students); //Const cls = mapToClass(classData, teachers, students);
const classRepository = getClassRepository(); const classRepository = getClassRepository();
@ -91,9 +89,7 @@ export async function getClassStudents(classId: string): Promise<StudentDTO[]> {
export async function getClassStudentsIds(classId: string): Promise<string[]> { export async function getClassStudentsIds(classId: string): Promise<string[]> {
const students: StudentDTO[] = await fetchClassStudents(classId); const students: StudentDTO[] = await fetchClassStudents(classId);
return students.map((student) => { return students.map((student) => student.username);
return student.username;
});
} }
export async function getClassTeacherInvitations( export async function getClassTeacherInvitations(

View file

@ -85,23 +85,15 @@ async function fetchLearningObjects(
const nodes: LearningObjectNode[] = learningPathResponse.data[0].nodes; const nodes: LearningObjectNode[] = learningPathResponse.data[0].nodes;
if (!full) { if (!full) {
return nodes.map((node) => { return nodes.map((node) => node.learningobject_hruid);
return node.learningobject_hruid;
});
} }
return await Promise.all( return await Promise.all(
nodes.map(async (node) => { nodes.map(async (node) => getLearningObjectById(
return getLearningObjectById(
node.learningobject_hruid, node.learningobject_hruid,
language language
); ))
}) ).then((objects) => objects.filter((obj): obj is FilteredLearningObject => obj !== null));
).then((objects) => {
return objects.filter((obj): obj is FilteredLearningObject => {
return obj !== null;
});
});
} catch (error) { } catch (error) {
console.error('❌ Error fetching learning objects:', error); console.error('❌ Error fetching learning objects:', error);
return []; return [];

View file

@ -45,7 +45,7 @@ export async function getQuestion(questionId: QuestionId): Promise<QuestionDTO |
const question = await fetchQuestion(questionId); const question = await fetchQuestion(questionId);
if (!question) if (!question)
return null {return null}
return mapToQuestionDTO(question); return mapToQuestionDTO(question);
} }
@ -55,17 +55,17 @@ export async function getAnswersByQuestion(questionId: QuestionId, full: boolean
const question = await fetchQuestion(questionId); const question = await fetchQuestion(questionId);
if (!question) if (!question)
return []; {return [];}
const answers: Answer[] = await answerRepository.findAllAnswersToQuestion(question); const answers: Answer[] = await answerRepository.findAllAnswersToQuestion(question);
if (!answers) if (!answers)
return [] {return []}
const answersDTO = answers.map(mapToAnswerDTO); const answersDTO = answers.map(mapToAnswerDTO);
if (full) if (full)
return answersDTO {return answersDTO}
return answersDTO.map(mapToAnswerId); return answersDTO.map(mapToAnswerId);
} }
@ -94,7 +94,7 @@ export async function deleteQuestion(questionId: QuestionId) {
const question = await fetchQuestion(questionId); const question = await fetchQuestion(questionId);
if (!question) if (!question)
return null {return null}
try { try {
await questionRepository.removeQuestionByLearningObjectAndSequenceNumber( await questionRepository.removeQuestionByLearningObjectAndSequenceNumber(

View file

@ -23,9 +23,7 @@ export async function getAllStudents(): Promise<StudentDTO[]> {
export async function getAllStudentIds(): Promise<string[]> { export async function getAllStudentIds(): Promise<string[]> {
const users = await getAllStudents(); const users = await getAllStudents();
return users.map((user) => { return users.map((user) => user.username);
return user.username;
});
} }
export async function getStudent(username: string): Promise<StudentDTO | null> { export async function getStudent(username: string): Promise<StudentDTO | null> {
@ -98,9 +96,7 @@ export async function getStudentAssignments(username: string, full: boolean): Pr
const assignments = ( const assignments = (
await Promise.all( await Promise.all(
classes.map(async (cls) => { classes.map(async (cls) => await getAllAssignments(cls.classId!, full))
return await getAllAssignments(cls.classId!, full);
})
) )
).flat(); ).flat();

View file

@ -46,7 +46,7 @@ export async function deleteSubmission(
const submission = getSubmission(learningObjectHruid, language, version, submissionNumber); const submission = getSubmission(learningObjectHruid, language, version, submissionNumber);
if (!submission) if (!submission)
return null {return null}
const loId = new LearningObjectIdentifier(learningObjectHruid, language, version); const loId = new LearningObjectIdentifier(learningObjectHruid, language, version);
await submissionRepository.deleteSubmissionByLearningObjectAndSubmissionNumber(loId, submissionNumber); await submissionRepository.deleteSubmissionByLearningObjectAndSubmissionNumber(loId, submissionNumber);

View file

@ -27,9 +27,7 @@ export async function getAllTeachers(): Promise<TeacherDTO[]> {
export async function getAllTeacherIds(): Promise<string[]> { export async function getAllTeacherIds(): Promise<string[]> {
const users = await getAllTeachers(); const users = await getAllTeachers();
return users.map((user) => { return users.map((user) => user.username);
return user.username;
});
} }
export async function getTeacher(username: string): Promise<TeacherDTO | null> { export async function getTeacher(username: string): Promise<TeacherDTO | null> {
@ -89,9 +87,7 @@ export async function getClassesByTeacher(username: string): Promise<ClassDTO[]>
export async function getClassIdsByTeacher(username: string): Promise<string[]> { export async function getClassIdsByTeacher(username: string): Promise<string[]> {
const classes = await fetchClassesByTeacher(username); const classes = await fetchClassesByTeacher(username);
return classes.map((cls) => { return classes.map((cls) => cls.id);
return cls.id;
});
} }
export async function fetchStudentsByTeacher(username: string) { export async function fetchStudentsByTeacher(username: string) {
@ -99,9 +95,7 @@ export async function fetchStudentsByTeacher(username: string) {
return ( return (
await Promise.all( await Promise.all(
classes.map(async (id) => { classes.map(async (id) => getClassStudents(id))
return getClassStudents(id);
})
) )
).flat(); ).flat();
} }
@ -112,9 +106,7 @@ export async function getStudentsByTeacher(username: string): Promise<StudentDTO
export async function getStudentIdsByTeacher(username: string): Promise<string[]> { export async function getStudentIdsByTeacher(username: string): Promise<string[]> {
const students = await fetchStudentsByTeacher(username); const students = await fetchStudentsByTeacher(username);
return students.map((student) => { return students.map((student) => student.username);
return student.username;
});
} }
export async function fetchTeacherQuestions(username: string): Promise<QuestionDTO[]> { export async function fetchTeacherQuestions(username: string): Promise<QuestionDTO[]> {

View file

@ -16,9 +16,7 @@ export class UserService<T extends User> {
async getAllUserIds(): Promise<string[]> { async getAllUserIds(): Promise<string[]> {
const users = await this.getAllUsers(); const users = await this.getAllUsers();
return users.map((user) => { return users.map((user) => user.username);
return user.username;
});
} }
async getUserByUsername(username: string): Promise<UserDTO | null> { async getUserByUsername(username: string): Promise<UserDTO | null> {