refactor(backend): logger i.p.v. console
This commit is contained in:
		
							parent
							
								
									30ec73a88d
								
							
						
					
					
						commit
						c14d6c53da
					
				
					 9 changed files with 30 additions and 22 deletions
				
			
		|  | @ -1,6 +1,7 @@ | ||||||
| import { Request, Response } from 'express'; | import { Request, Response } from 'express'; | ||||||
| import { createClass, getAllClasses, getClass, getClassStudents, getClassStudentsIds, getClassTeacherInvitations } from '../services/class.js'; | import { createClass, getAllClasses, getClass, getClassStudents, getClassStudentsIds, getClassTeacherInvitations } from '../services/class.js'; | ||||||
| import { ClassDTO } from '../interfaces/class.js'; | import { ClassDTO } from '../interfaces/class.js'; | ||||||
|  | import { getLogger } from '../logging/initalize.js'; | ||||||
| 
 | 
 | ||||||
| export async function getAllClassesHandler(req: Request, res: Response): Promise<void> { | export async function getAllClassesHandler(req: Request, res: Response): Promise<void> { | ||||||
|     const full = req.query.full === 'true'; |     const full = req.query.full === 'true'; | ||||||
|  | @ -49,7 +50,7 @@ export async function getClassHandler(req: Request, res: Response): Promise<void | ||||||
| 
 | 
 | ||||||
|         res.json(cls); |         res.json(cls); | ||||||
|     } catch (error) { |     } catch (error) { | ||||||
|         console.error('Error fetching learning objects:', error); |         getLogger().error('Error fetching learning objects:', error); | ||||||
|         res.status(500).json({ error: 'Internal server error' }); |         res.status(500).json({ error: 'Internal server error' }); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -16,6 +16,7 @@ import { Student } from '../entities/users/student.entity.js'; | ||||||
| import { StudentDTO } from '../interfaces/student.js'; | import { StudentDTO } from '../interfaces/student.js'; | ||||||
| import { getStudentRepository } from '../data/repositories.js'; | import { getStudentRepository } from '../data/repositories.js'; | ||||||
| import { UserDTO } from '../interfaces/user.js'; | import { UserDTO } from '../interfaces/user.js'; | ||||||
|  | import { getLogger } from '../logging/initalize.js'; | ||||||
| 
 | 
 | ||||||
| // TODO: accept arguments (full, ...)
 | // TODO: accept arguments (full, ...)
 | ||||||
| // TODO: endpoints
 | // TODO: endpoints
 | ||||||
|  | @ -104,7 +105,7 @@ export async function getStudentClassesHandler(req: Request, res: Response): Pro | ||||||
|             }, |             }, | ||||||
|         }); |         }); | ||||||
|     } catch (error) { |     } catch (error) { | ||||||
|         console.error('Error fetching learning objects:', error); |         getLogger().error('Error fetching learning objects:', error); | ||||||
|         res.status(500).json({ error: 'Internal server error' }); |         res.status(500).json({ error: 'Internal server error' }); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -17,6 +17,7 @@ import { QuestionDTO, QuestionId } from '../interfaces/question.js'; | ||||||
| import { Teacher } from '../entities/users/teacher.entity.js'; | import { Teacher } from '../entities/users/teacher.entity.js'; | ||||||
| import { TeacherDTO } from '../interfaces/teacher.js'; | import { TeacherDTO } from '../interfaces/teacher.js'; | ||||||
| import { getTeacherRepository } from '../data/repositories.js'; | import { getTeacherRepository } from '../data/repositories.js'; | ||||||
|  | import { getLogger } from '../logging/initalize.js'; | ||||||
| 
 | 
 | ||||||
| export async function getAllTeachersHandler(req: Request, res: Response): Promise<void> { | export async function getAllTeachersHandler(req: Request, res: Response): Promise<void> { | ||||||
|     const full = req.query.full === 'true'; |     const full = req.query.full === 'true'; | ||||||
|  | @ -100,7 +101,7 @@ export async function getTeacherClassHandler(req: Request, res: Response): Promi | ||||||
| 
 | 
 | ||||||
|         res.status(201).json(classes); |         res.status(201).json(classes); | ||||||
|     } catch (error) { |     } catch (error) { | ||||||
|         console.error('Error fetching classes by teacher:', error); |         getLogger().error('Error fetching classes by teacher:', error); | ||||||
|         res.status(500).json({ error: 'Internal server error' }); |         res.status(500).json({ error: 'Internal server error' }); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -119,7 +120,7 @@ export async function getTeacherStudentHandler(req: Request, res: Response): Pro | ||||||
| 
 | 
 | ||||||
|         res.status(201).json(students); |         res.status(201).json(students); | ||||||
|     } catch (error) { |     } catch (error) { | ||||||
|         console.error('Error fetching students by teacher:', error); |         getLogger().error('Error fetching students by teacher:', error); | ||||||
|         res.status(500).json({ error: 'Internal server error' }); |         res.status(500).json({ error: 'Internal server error' }); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -138,7 +139,7 @@ export async function getTeacherQuestionHandler(req: Request, res: Response): Pr | ||||||
| 
 | 
 | ||||||
|         res.status(201).json(questions); |         res.status(201).json(questions); | ||||||
|     } catch (error) { |     } catch (error) { | ||||||
|         console.error('Error fetching questions by teacher:', error); |         getLogger().error('Error fetching questions by teacher:', error); | ||||||
|         res.status(500).json({ error: 'Internal server error' }); |         res.status(500).json({ error: 'Internal server error' }); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ import { Request, Response } from 'express'; | ||||||
| import { UserService } from '../services/users.js'; | import { UserService } from '../services/users.js'; | ||||||
| import { UserDTO } from '../interfaces/user.js'; | import { UserDTO } from '../interfaces/user.js'; | ||||||
| import { User } from '../entities/users/user.entity.js'; | import { User } from '../entities/users/user.entity.js'; | ||||||
|  | import { getLogger } from '../logging/initalize.js'; | ||||||
| 
 | 
 | ||||||
| export async function getAllUsersHandler<T extends User>(req: Request, res: Response, service: UserService<T>): Promise<void> { | export async function getAllUsersHandler<T extends User>(req: Request, res: Response, service: UserService<T>): Promise<void> { | ||||||
|     try { |     try { | ||||||
|  | @ -16,7 +17,7 @@ export async function getAllUsersHandler<T extends User>(req: Request, res: Resp | ||||||
| 
 | 
 | ||||||
|         res.status(201).json(users); |         res.status(201).json(users); | ||||||
|     } catch (error) { |     } catch (error) { | ||||||
|         console.error('❌ Error fetching users:', error); |         getLogger().error('❌ Error fetching users:', error); | ||||||
|         res.status(500).json({ error: 'Internal server error' }); |         res.status(500).json({ error: 'Internal server error' }); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -41,14 +42,14 @@ export async function getUserHandler<T extends User>(req: Request, res: Response | ||||||
| 
 | 
 | ||||||
|         res.status(201).json(user); |         res.status(201).json(user); | ||||||
|     } catch (error) { |     } catch (error) { | ||||||
|         console.error('❌ Error fetching users:', error); |         getLogger().error('❌ Error fetching users:', error); | ||||||
|         res.status(500).json({ error: 'Internal server error' }); |         res.status(500).json({ error: 'Internal server error' }); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export async function createUserHandler<T extends User>(req: Request, res: Response, service: UserService<T>, UserClass: new () => T) { | export async function createUserHandler<T extends User>(req: Request, res: Response, service: UserService<T>, UserClass: new () => T) { | ||||||
|     try { |     try { | ||||||
|         console.log('req', req); |         getLogger().debug({ req: req }); | ||||||
|         const userData = req.body as UserDTO; |         const userData = req.body as UserDTO; | ||||||
| 
 | 
 | ||||||
|         if (!userData.username || !userData.firstName || !userData.lastName) { |         if (!userData.username || !userData.firstName || !userData.lastName) { | ||||||
|  | @ -61,7 +62,7 @@ export async function createUserHandler<T extends User>(req: Request, res: Respo | ||||||
|         const newUser = await service.createUser(userData, UserClass); |         const newUser = await service.createUser(userData, UserClass); | ||||||
|         res.status(201).json(newUser); |         res.status(201).json(newUser); | ||||||
|     } catch (error) { |     } catch (error) { | ||||||
|         console.error('❌ Error creating user:', error); |         getLogger().error('❌ Error creating user:', error); | ||||||
|         res.status(500).json({ error: 'Internal server error' }); |         res.status(500).json({ error: 'Internal server error' }); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -85,7 +86,7 @@ export async function deleteUserHandler<T extends User>(req: Request, res: Respo | ||||||
| 
 | 
 | ||||||
|         res.status(200).json(deletedUser); |         res.status(200).json(deletedUser); | ||||||
|     } catch (error) { |     } catch (error) { | ||||||
|         console.error('❌ Error deleting user:', error); |         getLogger().error('❌ Error deleting user:', error); | ||||||
|         res.status(500).json({ error: 'Internal server error' }); |         res.status(500).json({ error: 'Internal server error' }); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -3,6 +3,7 @@ import { Assignment } from '../entities/assignments/assignment.entity.js'; | ||||||
| import { Class } from '../entities/classes/class.entity.js'; | import { Class } from '../entities/classes/class.entity.js'; | ||||||
| import { languageMap } from '../entities/content/language.js'; | import { languageMap } from '../entities/content/language.js'; | ||||||
| import { GroupDTO, mapToGroupDTO } from './group.js'; | import { GroupDTO, mapToGroupDTO } from './group.js'; | ||||||
|  | import { getLogger } from '../logging/initalize.js'; | ||||||
| 
 | 
 | ||||||
| export interface AssignmentDTO { | export interface AssignmentDTO { | ||||||
|     id: number; |     id: number; | ||||||
|  | @ -46,7 +47,7 @@ export function mapToAssignment(assignmentData: AssignmentDTO, cls: Class): Assi | ||||||
|     assignment.learningPathLanguage = languageMap[assignmentData.language] || FALLBACK_LANG; |     assignment.learningPathLanguage = languageMap[assignmentData.language] || FALLBACK_LANG; | ||||||
|     assignment.within = cls; |     assignment.within = cls; | ||||||
| 
 | 
 | ||||||
|     console.log(assignment); |     getLogger().debug(assignment); | ||||||
| 
 | 
 | ||||||
|     return assignment; |     return assignment; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -9,6 +9,7 @@ import { | ||||||
| import { Group } from '../entities/assignments/group.entity.js'; | import { Group } from '../entities/assignments/group.entity.js'; | ||||||
| import { GroupDTO, mapToGroupDTO, mapToGroupDTOId } from '../interfaces/group.js'; | import { GroupDTO, mapToGroupDTO, mapToGroupDTOId } from '../interfaces/group.js'; | ||||||
| import { mapToSubmissionDTO, SubmissionDTO } from '../interfaces/submission.js'; | import { mapToSubmissionDTO, SubmissionDTO } from '../interfaces/submission.js'; | ||||||
|  | import { getLogger } from '../logging/initalize.js'; | ||||||
| 
 | 
 | ||||||
| export async function getGroup(classId: string, assignmentNumber: number, groupNumber: number, full: boolean): Promise<GroupDTO | null> { | export async function getGroup(classId: string, assignmentNumber: number, groupNumber: number, full: boolean): Promise<GroupDTO | null> { | ||||||
|     const classRepository = getClassRepository(); |     const classRepository = getClassRepository(); | ||||||
|  | @ -45,7 +46,7 @@ export async function createGroup(groupData: GroupDTO, classid: string, assignme | ||||||
|     const memberUsernames = (groupData.members as string[]) || []; // TODO check if groupdata.members is a list
 |     const memberUsernames = (groupData.members as string[]) || []; // TODO check if groupdata.members is a list
 | ||||||
|     const members = (await Promise.all([...memberUsernames].map((id) => studentRepository.findByUsername(id)))).filter((student) => student != null); |     const members = (await Promise.all([...memberUsernames].map((id) => studentRepository.findByUsername(id)))).filter((student) => student != null); | ||||||
| 
 | 
 | ||||||
|     console.log(members); |     getLogger().debug(members); | ||||||
| 
 | 
 | ||||||
|     const classRepository = getClassRepository(); |     const classRepository = getClassRepository(); | ||||||
|     const cls = await classRepository.findById(classid); |     const cls = await classRepository.findById(classid); | ||||||
|  | @ -71,7 +72,7 @@ export async function createGroup(groupData: GroupDTO, classid: string, assignme | ||||||
| 
 | 
 | ||||||
|         return newGroup; |         return newGroup; | ||||||
|     } catch (e) { |     } catch (e) { | ||||||
|         console.log(e); |         getLogger().error(e); | ||||||
|         return null; |         return null; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -95,8 +96,7 @@ export async function getAllGroups(classId: string, assignmentNumber: number, fu | ||||||
|     const groups = await groupRepository.findAllGroupsForAssignment(assignment); |     const groups = await groupRepository.findAllGroupsForAssignment(assignment); | ||||||
| 
 | 
 | ||||||
|     if (full) { |     if (full) { | ||||||
|         console.log('full'); |         getLogger().debug({ full: full, groups: groups }); | ||||||
|         console.log(groups); |  | ||||||
|         return groups.map(mapToGroupDTO); |         return groups.map(mapToGroupDTO); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,6 +1,7 @@ | ||||||
| import { DWENGO_API_BASE } from '../config.js'; | import { DWENGO_API_BASE } from '../config.js'; | ||||||
| import { fetchWithLogging } from '../util/api-helper.js'; | import { fetchWithLogging } from '../util/api-helper.js'; | ||||||
| import { FilteredLearningObject, LearningObjectMetadata, LearningObjectNode, LearningPathResponse } from '../interfaces/learning-content.js'; | import { FilteredLearningObject, LearningObjectMetadata, LearningObjectNode, LearningPathResponse } from '../interfaces/learning-content.js'; | ||||||
|  | import { getLogger } from '../logging/initalize.js'; | ||||||
| 
 | 
 | ||||||
| function filterData(data: LearningObjectMetadata, htmlUrl: string): FilteredLearningObject { | function filterData(data: LearningObjectMetadata, htmlUrl: string): FilteredLearningObject { | ||||||
|     return { |     return { | ||||||
|  | @ -37,7 +38,7 @@ export async function getLearningObjectById(hruid: string, language: string): Pr | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
|     if (!metadata) { |     if (!metadata) { | ||||||
|         console.error(`⚠️ WARNING: Learning object "${hruid}" not found.`); |         getLogger().error(`⚠️ WARNING: Learning object "${hruid}" not found.`); | ||||||
|         return null; |         return null; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -53,7 +54,7 @@ async function fetchLearningObjects(hruid: string, full: boolean, language: stri | ||||||
|         const learningPathResponse: LearningPathResponse = await fetchLearningPaths([hruid], language, `Learning path for HRUID "${hruid}"`); |         const learningPathResponse: LearningPathResponse = await fetchLearningPaths([hruid], language, `Learning path for HRUID "${hruid}"`); | ||||||
| 
 | 
 | ||||||
|         if (!learningPathResponse.success || !learningPathResponse.data?.length) { |         if (!learningPathResponse.success || !learningPathResponse.data?.length) { | ||||||
|             console.error(`⚠️ WARNING: Learning path "${hruid}" exists but contains no learning objects.`); |             getLogger().error(`⚠️ WARNING: Learning path "${hruid}" exists but contains no learning objects.`); | ||||||
|             return []; |             return []; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  | @ -67,7 +68,7 @@ async function fetchLearningObjects(hruid: string, full: boolean, language: stri | ||||||
|             objects.filter((obj): obj is FilteredLearningObject => obj !== null) |             objects.filter((obj): obj is FilteredLearningObject => obj !== null) | ||||||
|         ); |         ); | ||||||
|     } catch (error) { |     } catch (error) { | ||||||
|         console.error('❌ Error fetching learning objects:', error); |         getLogger().error('❌ Error fetching learning objects:', error); | ||||||
|         return []; |         return []; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -8,6 +8,7 @@ import { mapToStudent, mapToStudentDTO, StudentDTO } from '../interfaces/student | ||||||
| import { mapToSubmissionDTO, SubmissionDTO } from '../interfaces/submission.js'; | import { mapToSubmissionDTO, SubmissionDTO } from '../interfaces/submission.js'; | ||||||
| import { getAllAssignments } from './assignments.js'; | import { getAllAssignments } from './assignments.js'; | ||||||
| import { UserService } from './users.js'; | import { UserService } from './users.js'; | ||||||
|  | import { getLogger } from '../logging/initalize.js'; | ||||||
| 
 | 
 | ||||||
| export async function getAllStudents(): Promise<StudentDTO[]> { | export async function getAllStudents(): Promise<StudentDTO[]> { | ||||||
|     const studentRepository = getStudentRepository(); |     const studentRepository = getStudentRepository(); | ||||||
|  | @ -35,7 +36,7 @@ export async function createStudent(userData: StudentDTO): Promise<StudentDTO | | ||||||
| 
 | 
 | ||||||
|         return mapToStudentDTO(newStudent); |         return mapToStudentDTO(newStudent); | ||||||
|     } catch (e) { |     } catch (e) { | ||||||
|         console.log(e); |         getLogger().error(e); | ||||||
|         return null; |         return null; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -54,7 +55,7 @@ export async function deleteStudent(username: string): Promise<StudentDTO | null | ||||||
| 
 | 
 | ||||||
|         return mapToStudentDTO(user); |         return mapToStudentDTO(user); | ||||||
|     } catch (e) { |     } catch (e) { | ||||||
|         console.log(e); |         getLogger().error(e); | ||||||
|         return null; |         return null; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -13,6 +13,7 @@ import { mapToQuestionDTO, mapToQuestionId, QuestionDTO, QuestionId } from '../i | ||||||
| import { UserService } from './users.js'; | import { UserService } from './users.js'; | ||||||
| import { mapToUser } from '../interfaces/user.js'; | import { mapToUser } from '../interfaces/user.js'; | ||||||
| import { mapToTeacher, mapToTeacherDTO, TeacherDTO } from '../interfaces/teacher.js'; | import { mapToTeacher, mapToTeacherDTO, TeacherDTO } from '../interfaces/teacher.js'; | ||||||
|  | import { getLogger } from '../logging/initalize.js'; | ||||||
| 
 | 
 | ||||||
| export async function getAllTeachers(): Promise<TeacherDTO[]> { | export async function getAllTeachers(): Promise<TeacherDTO[]> { | ||||||
|     const teacherRepository = getTeacherRepository(); |     const teacherRepository = getTeacherRepository(); | ||||||
|  | @ -40,7 +41,7 @@ export async function createTeacher(userData: TeacherDTO): Promise<TeacherDTO | | ||||||
| 
 | 
 | ||||||
|         return mapToTeacherDTO(newTeacher); |         return mapToTeacherDTO(newTeacher); | ||||||
|     } catch (e) { |     } catch (e) { | ||||||
|         console.log(e); |         getLogger().error(e); | ||||||
|         return null; |         return null; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -59,7 +60,7 @@ export async function deleteTeacher(username: string): Promise<TeacherDTO | null | ||||||
| 
 | 
 | ||||||
|         return mapToTeacherDTO(user); |         return mapToTeacherDTO(user); | ||||||
|     } catch (e) { |     } catch (e) { | ||||||
|         console.log(e); |         getLogger().error(e); | ||||||
|         return null; |         return null; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
		Reference in a new issue