chore(backend): Verwijder redundante methoden
This commit is contained in:
		
							parent
							
								
									edc52a559c
								
							
						
					
					
						commit
						2f5bb333db
					
				
					 6 changed files with 8 additions and 58 deletions
				
			
		|  | @ -66,7 +66,7 @@ export async function getLearningPaths(req: AuthenticatedRequest, res: Response) | ||||||
| 
 | 
 | ||||||
|             if (req.auth) { |             if (req.auth) { | ||||||
|                 const adminUsername = req.auth.username; |                 const adminUsername = req.auth.username; | ||||||
|                 const userLearningPaths = await learningPathService.searchLearningPathsByAdmin([adminUsername], language as Language, forGroup) || []; |                 const userLearningPaths = await learningPathService.getLearningPathsAdministratedBy(adminUsername) || []; | ||||||
|                 allLearningPaths = apiLearningPaths.concat(userLearningPaths); |                 allLearningPaths = apiLearningPaths.concat(userLearningPaths); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,11 +1,9 @@ | ||||||
| import { DwengoEntityRepository } from '../dwengo-entity-repository.js'; | import { DwengoEntityRepository } from '../dwengo-entity-repository.js'; | ||||||
| import { LearningPath } from '../../entities/content/learning-path.entity.js'; | import { LearningPath } from '../../entities/content/learning-path.entity.js'; | ||||||
| import { Language } from '@dwengo-1/common/util/language'; | import { Language } from '@dwengo-1/common/util/language'; | ||||||
| import { MatchMode } from '@dwengo-1/common/util/match-mode'; |  | ||||||
| import { LearningPathNode } from '../../entities/content/learning-path-node.entity.js'; | import { LearningPathNode } from '../../entities/content/learning-path-node.entity.js'; | ||||||
| import { RequiredEntityData } from '@mikro-orm/core'; | import { RequiredEntityData } from '@mikro-orm/core'; | ||||||
| import { LearningPathTransition } from '../../entities/content/learning-path-transition.entity.js'; | import { LearningPathTransition } from '../../entities/content/learning-path-transition.entity.js'; | ||||||
| import { Teacher } from '../../entities/users/teacher.entity'; |  | ||||||
| 
 | 
 | ||||||
| export class LearningPathRepository extends DwengoEntityRepository<LearningPath> { | export class LearningPathRepository extends DwengoEntityRepository<LearningPath> { | ||||||
|     public async findByHruidAndLanguage(hruid: string, language: Language): Promise<LearningPath | null> { |     public async findByHruidAndLanguage(hruid: string, language: Language): Promise<LearningPath | null> { | ||||||
|  | @ -15,18 +13,6 @@ export class LearningPathRepository extends DwengoEntityRepository<LearningPath> | ||||||
|         }, { populate: ['nodes', 'nodes.transitions', 'admins'] }); |         }, { populate: ['nodes', 'nodes.transitions', 'admins'] }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public async findByAdmins(admins: Teacher[], language: Language, _matchMode?: MatchMode): Promise<LearningPath[]> { |  | ||||||
|         return this.findAll({ |  | ||||||
|             where: { |  | ||||||
|                 language: language, |  | ||||||
|                 admins: { |  | ||||||
|                     $in: admins, |  | ||||||
|                 }, |  | ||||||
|             }, |  | ||||||
|             populate: ['nodes', 'nodes.transitions'], |  | ||||||
|         }); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     /** |     /** | ||||||
|      * Returns all learning paths which have the given language and whose title OR description contains the |      * Returns all learning paths which have the given language and whose title OR description contains the | ||||||
|      * query string. |      * query string. | ||||||
|  |  | ||||||
|  | @ -4,7 +4,11 @@ import { getLearningPathRepository } from '../../data/repositories.js'; | ||||||
| import learningObjectService from '../learning-objects/learning-object-service.js'; | import learningObjectService from '../learning-objects/learning-object-service.js'; | ||||||
| import { LearningPathNode } from '../../entities/content/learning-path-node.entity.js'; | import { LearningPathNode } from '../../entities/content/learning-path-node.entity.js'; | ||||||
| import { LearningPathTransition } from '../../entities/content/learning-path-transition.entity.js'; | import { LearningPathTransition } from '../../entities/content/learning-path-transition.entity.js'; | ||||||
| import { getLastSubmissionForGroup, idFromLearningPathNode, isTransitionPossible } from './learning-path-personalization-util.js'; | import { | ||||||
|  |     getLastSubmissionForGroup, | ||||||
|  |     idFromLearningPathNode, | ||||||
|  |     isTransitionPossible, | ||||||
|  | } from './learning-path-personalization-util.js'; | ||||||
| import { | import { | ||||||
|     FilteredLearningObject, |     FilteredLearningObject, | ||||||
|     LearningObjectNode, |     LearningObjectNode, | ||||||
|  | @ -13,12 +17,10 @@ import { | ||||||
|     Transition, |     Transition, | ||||||
| } from '@dwengo-1/common/interfaces/learning-content'; | } from '@dwengo-1/common/interfaces/learning-content'; | ||||||
| import { Language } from '@dwengo-1/common/util/language'; | import { Language } from '@dwengo-1/common/util/language'; | ||||||
| import { MatchMode } from '@dwengo-1/common/util/match-mode'; |  | ||||||
| import { Group } from '../../entities/assignments/group.entity'; | import { Group } from '../../entities/assignments/group.entity'; | ||||||
| import { Collection } from '@mikro-orm/core'; | import { Collection } from '@mikro-orm/core'; | ||||||
| import { v4 } from 'uuid'; | import { v4 } from 'uuid'; | ||||||
| import { getLogger } from '../../logging/initalize.js'; | import { getLogger } from '../../logging/initalize.js'; | ||||||
| import { Teacher } from '../../entities/users/teacher.entity'; |  | ||||||
| 
 | 
 | ||||||
| const logger = getLogger(); | const logger = getLogger(); | ||||||
| 
 | 
 | ||||||
|  | @ -235,13 +237,6 @@ const databaseLearningPathProvider: LearningPathProvider = { | ||||||
|         const searchResults = await learningPathRepo.findByQueryStringAndLanguage(query, language); |         const searchResults = await learningPathRepo.findByQueryStringAndLanguage(query, language); | ||||||
|         return await Promise.all(searchResults.map(async (result, index) => convertLearningPath(result, index, personalizedFor))); |         return await Promise.all(searchResults.map(async (result, index) => convertLearningPath(result, index, personalizedFor))); | ||||||
|     }, |     }, | ||||||
| 
 |  | ||||||
|     async searchLearningPathsByAdmin(admins: Teacher[], language: Language, personalizedFor?: Group, matchMode?: MatchMode): Promise<LearningPath[]> { |  | ||||||
|         const learningPathRepo = getLearningPathRepository(); |  | ||||||
| 
 |  | ||||||
|         const searchResults = await learningPathRepo.findByAdmins(admins, language, matchMode); |  | ||||||
|         return await Promise.all(searchResults.map(async (result, index) => convertLearningPath(result, index, personalizedFor))); |  | ||||||
|     }, |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export default databaseLearningPathProvider; | export default databaseLearningPathProvider; | ||||||
|  |  | ||||||
|  | @ -3,8 +3,6 @@ import { DWENGO_API_BASE } from '../../config.js'; | ||||||
| import { LearningPathProvider } from './learning-path-provider.js'; | import { LearningPathProvider } from './learning-path-provider.js'; | ||||||
| import { getLogger, Logger } from '../../logging/initalize.js'; | import { getLogger, Logger } from '../../logging/initalize.js'; | ||||||
| import { LearningPath, LearningPathResponse } from '@dwengo-1/common/interfaces/learning-content'; | import { LearningPath, LearningPathResponse } from '@dwengo-1/common/interfaces/learning-content'; | ||||||
| import { Teacher } from '../../entities/users/teacher.entity'; |  | ||||||
| import { Language } from '@dwengo-1/common/util/language'; |  | ||||||
| import { Group } from '../../entities/assignments/group.entity.js'; | import { Group } from '../../entities/assignments/group.entity.js'; | ||||||
| import { getLastSubmissionForGroup, idFromLearningObjectNode } from './learning-path-personalization-util.js'; | import { getLastSubmissionForGroup, idFromLearningObjectNode } from './learning-path-personalization-util.js'; | ||||||
| 
 | 
 | ||||||
|  | @ -21,7 +19,7 @@ async function addProgressToLearningPath(learningPath: LearningPath, personalize | ||||||
|         learningPath.nodes.map(async (node) => { |         learningPath.nodes.map(async (node) => { | ||||||
|             const lastSubmission = personalizedFor ? await getLastSubmissionForGroup(idFromLearningObjectNode(node), personalizedFor) : null; |             const lastSubmission = personalizedFor ? await getLastSubmissionForGroup(idFromLearningObjectNode(node), personalizedFor) : null; | ||||||
|             node.done = Boolean(lastSubmission); |             node.done = Boolean(lastSubmission); | ||||||
|         }) |         }), | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
|     learningPath.num_nodes = learningPath.nodes.length; |     learningPath.num_nodes = learningPath.nodes.length; | ||||||
|  | @ -78,16 +76,8 @@ const dwengoApiLearningPathProvider: LearningPathProvider = { | ||||||
|     }, |     }, | ||||||
| 
 | 
 | ||||||
|     async getLearningPathsAdministratedBy(_adminUsername: string) { |     async getLearningPathsAdministratedBy(_adminUsername: string) { | ||||||
|         return []; // Learning paths fetched from the Dwengo API cannot be administrated by a user.
 |  | ||||||
|     }, |  | ||||||
| 
 |  | ||||||
|     async searchLearningPathsByAdmin(admins: Teacher[], language: string): Promise<LearningPath[]> { |  | ||||||
|         if (!admins || admins.length === 0) { |  | ||||||
|             return this.searchLearningPaths('', language as Language); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         // Dwengo API does not have the concept of admins, so we cannot filter by them.
 |         // Dwengo API does not have the concept of admins, so we cannot filter by them.
 | ||||||
|         return [] |         return []; | ||||||
|     }, |     }, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -22,9 +22,4 @@ export interface LearningPathProvider { | ||||||
|      * Get all learning paths which have the teacher with the given user as an administrator. |      * Get all learning paths which have the teacher with the given user as an administrator. | ||||||
|      */ |      */ | ||||||
|     getLearningPathsAdministratedBy(adminUsername: string): Promise<LearningPath[]>; |     getLearningPathsAdministratedBy(adminUsername: string): Promise<LearningPath[]>; | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Fetch the learning paths for the given admins from the data source. |  | ||||||
|      */ |  | ||||||
|     searchLearningPathsByAdmin(admins: Teacher[], language: Language, personalizedFor?: Group, matchMode?: MatchMode): Promise<LearningPath[]>; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -129,22 +129,6 @@ const learningPathService = { | ||||||
|         return providerResponses.flat(); |         return providerResponses.flat(); | ||||||
|     }, |     }, | ||||||
| 
 | 
 | ||||||
|     /** |  | ||||||
|      * Fetch the learning paths for the given admins from the data source. |  | ||||||
|      */ |  | ||||||
|     async searchLearningPathsByAdmin(adminsIds: string[], language: Language, personalizedFor?: Group): Promise<LearningPath[]> { |  | ||||||
|         const teacherRepo = getTeacherRepository(); |  | ||||||
|         const admins = await Promise.all( |  | ||||||
|             adminsIds .map(async (adminId) => await teacherRepo.findByUsername(adminId)) |  | ||||||
|         ); |  | ||||||
|         const adminsNotNull: Teacher[] = admins.filter((admin) => admin !== undefined) as Teacher[]; |  | ||||||
| 
 |  | ||||||
|         const providerResponses = await Promise.all( |  | ||||||
|             allProviders.map(async (provider) => provider.searchLearningPathsByAdmin(adminsNotNull, language, personalizedFor)), |  | ||||||
|         ); |  | ||||||
|         return providerResponses.flat(); |  | ||||||
|     }, |  | ||||||
| 
 |  | ||||||
|     /** |     /** | ||||||
|      * Add a new learning path to the database. |      * Add a new learning path to the database. | ||||||
|      * @param dto Learning path DTO from which the learning path will be created. |      * @param dto Learning path DTO from which the learning path will be created. | ||||||
|  |  | ||||||
		Reference in a new issue