fix: import errors van gabe gefixt, teacher en student abstractie weggedaan

This commit is contained in:
Adriaan Jacquet 2025-03-13 18:44:41 +01:00
parent 6404335040
commit b5390258e3
36 changed files with 9754 additions and 180 deletions

View file

@ -12,7 +12,7 @@ import {LearningObjectIdentifier} from "../entities/content/learning-object-iden
import {Language} from "../entities/content/language.js";
function getObjectId(req: Request, res: Response): LearningObjectIdentifier | null {
const { hruid, version} = req.params
const { hruid, version } = req.params
const lang = req.query.lang
if (!hruid || !version ) {
@ -23,7 +23,7 @@ function getObjectId(req: Request, res: Response): LearningObjectIdentifier | nu
return {
hruid,
language: lang as Language || FALLBACK_LANG,
version
version: +version
}
}

View file

@ -1,49 +1,106 @@
import { Request, Response } from 'express';
import {
createStudent,
deleteStudent,
getStudent,
getStudentAssignments,
getStudentClasses,
getStudentGroups,
getStudentSubmissions,
StudentService,
} from '../services/students.js';
import { ClassDTO } from '../interfaces/class.js';
import { getAllAssignments } from '../services/assignments.js';
import {
createUserHandler,
deleteUserHandler,
getAllUsersHandler,
getUserHandler,
} from './users.js';
import { Student } from '../entities/users/student.entity.js';
import { StudentDTO } from '../interfaces/student.js';
import { getStudentRepository } from '../data/repositories.js';
import { UserDTO } from '../interfaces/user.js';
// TODO: accept arguments (full, ...)
// TODO: endpoints
export async function getAllStudentsHandler(
req: Request,
res: Response
res: Response,
): Promise<void> {
await getAllUsersHandler<Student>(req, res, new StudentService());
const full = req.query.full === 'true';
const studentRepository = getStudentRepository();
const students: StudentDTO[] | string[] = full
? await getAllStudents()
: await getAllStudents();
if (!students) {
res.status(404).json({ error: `Student not found.` });
return;
}
res.status(201).json(students);
}
export async function getStudentHandler(
req: Request,
res: Response
res: Response,
): Promise<void> {
await getUserHandler<Student>(req, res, new StudentService());
const username = req.params.username;
if (!username) {
res.status(400).json({ error: 'Missing required field: username' });
return;
}
const user = await getStudent(username);
if (!user) {
res.status(404).json({
error: `User with username '${username}' not found.`,
});
return;
}
res.status(201).json(user);
}
export async function createStudentHandler(
req: Request,
res: Response
): Promise<void> {
await createUserHandler<Student>(req, res, new StudentService(), Student);
res: Response,
) {
const userData = req.body as StudentDTO;
if (!userData.username || !userData.firstName || !userData.lastName) {
res.status(400).json({
error: 'Missing required fields: username, firstName, lastName',
});
return;
}
const newUser = await createStudent(userData);
res.status(201).json(newUser);
}
export async function deleteStudentHandler(
req: Request,
res: Response
): Promise<void> {
await deleteUserHandler<Student>(req, res, new StudentService());
res: Response,
) {
const username = req.params.username;
if (!username) {
res.status(400).json({ error: 'Missing required field: username' });
return;
}
const deletedUser = await deleteStudent(username);
if (!deletedUser) {
res.status(404).json({
error: `User with username '${username}' not found.`,
});
return;
}
res.status(200).json(deletedUser);
}
export async function getStudentClassesHandler(
@ -115,3 +172,7 @@ export async function getStudentSubmissionsHandler(
submissions: submissions,
});
}
function getAllStudents(): StudentDTO[] | string[] | PromiseLike<StudentDTO[] | string[]> {
throw new Error('Function not implemented.');
}

View file

@ -21,7 +21,7 @@ export async function getSubmissionHandler(
}
let lang = languageMap[req.query.language as string] || Language.Dutch;
let version = req.query.version as string || '1';
let version = (req.query.version || 1) as number;
const submission = await getSubmission(lohruid, lang, version, submissionNumber);
@ -49,7 +49,7 @@ export async function deleteSubmissionHandler(req: Request, res: Response){
const submissionNumber = +req.params.id;
let lang = languageMap[req.query.language as string] || Language.Dutch;
let version = req.query.version as string || '1';
let version = (req.query.version || 1) as number;
const submission = await deleteSubmission(hruid, lang, version, submissionNumber);

View file

@ -1,49 +1,96 @@
import { Request, Response } from 'express';
import { TeacherUserService, TeacherService } from '../services/teachers.js';
import { createTeacher, deleteTeacher, getAllTeachers, getClassesByTeacher, getClassIdsByTeacher, getQuestionIdsByTeacher, getQuestionsByTeacher, getStudentIdsByTeacher, getStudentsByTeacher, getTeacher } from '../services/teachers.js';
import { ClassDTO } from '../interfaces/class.js';
import { StudentDTO } from '../interfaces/student.js';
import { QuestionDTO, QuestionId } from '../interfaces/question.js';
import {
createUserHandler,
deleteUserHandler,
getAllUsersHandler,
getUserHandler,
} from './users.js';
import { Teacher } from '../entities/users/teacher.entity.js';
import { TeacherDTO } from '../interfaces/teacher.js';
import { getTeacherRepository } from '../data/repositories.js';
export async function getAllTeachersHandler(
req: Request,
res: Response
res: Response,
): Promise<void> {
await getAllUsersHandler<Teacher>(req, res, new TeacherUserService());
const full = req.query.full === 'true';
const teacherRepository = getTeacherRepository();
const teachers: TeacherDTO[] | string[] = full
? await getAllTeachers()
: await getAllTeachers();
if (!teachers) {
res.status(404).json({ error: `Teacher not found.` });
return;
}
res.status(201).json(teachers);
}
export async function getTeacherHandler(
req: Request,
res: Response
res: Response,
): Promise<void> {
await getUserHandler<Teacher>(req, res, new TeacherUserService());
const username = req.params.username;
if (!username) {
res.status(400).json({ error: 'Missing required field: username' });
return;
}
const user = await getTeacher(username);
if (!user) {
res.status(404).json({
error: `User with username '${username}' not found.`,
});
return;
}
res.status(201).json(user);
}
export async function createTeacherHandler(
req: Request,
res: Response
): Promise<void> {
await createUserHandler<Teacher>(
req,
res,
new TeacherUserService(),
Teacher
);
res: Response,
) {
const userData = req.body as TeacherDTO;
if (!userData.username || !userData.firstName || !userData.lastName) {
res.status(400).json({
error: 'Missing required fields: username, firstName, lastName',
});
return;
}
const newUser = await createTeacher(userData);
res.status(201).json(newUser);
}
export async function deleteTeacherHandler(
req: Request,
res: Response
): Promise<void> {
await deleteUserHandler<Teacher>(req, res, new TeacherUserService());
res: Response,
) {
const username = req.params.username;
if (!username) {
res.status(400).json({ error: 'Missing required field: username' });
return;
}
const deletedUser = await deleteTeacher(username);
if (!deletedUser) {
res.status(404).json({
error: `User with username '${username}' not found.`,
});
return;
}
res.status(200).json(deletedUser);
}
export async function getTeacherClassHandler(
req: Request,
res: Response
@ -57,11 +104,9 @@ export async function getTeacherClassHandler(
return;
}
const teacherService = new TeacherService();
const classes: ClassDTO[] | string[] = full
? await teacherService.getClassesByTeacher(username)
: await teacherService.getClassIdsByTeacher(username);
? await getClassesByTeacher(username)
: await getClassIdsByTeacher(username);
res.status(201).json(classes);
} catch (error) {
@ -83,11 +128,9 @@ export async function getTeacherStudentHandler(
return;
}
const teacherService = new TeacherService();
const students: StudentDTO[] | string[] = full
? await teacherService.getStudentsByTeacher(username)
: await teacherService.getStudentIdsByTeacher(username);
? await getStudentsByTeacher(username)
: await getStudentIdsByTeacher(username);
res.status(201).json(students);
} catch (error) {
@ -109,11 +152,9 @@ export async function getTeacherQuestionHandler(
return;
}
const teacherService = new TeacherService();
const questions: QuestionDTO[] | QuestionId[] = full
? await teacherService.getQuestionsByTeacher(username)
: await teacherService.getQuestionIdsByTeacher(username);
? await getQuestionsByTeacher(username)
: await getQuestionIdsByTeacher(username);
res.status(201).json(questions);
} catch (error) {

View file

@ -1,6 +1,6 @@
import { Request, Response } from 'express';
import { themes } from '../data/themes.js';
import { loadTranslations } from '../util/translationHelper.js';
import { loadTranslations } from '../util/translation-helper.js';
interface Translations {
curricula_page: {