feat(backend): DatabaseLearningObjectProvider geïmplementeerd.
This commit is contained in:
		
							parent
							
								
									463c8c9fc0
								
							
						
					
					
						commit
						bbcf22e4ea
					
				
					 8 changed files with 157 additions and 32 deletions
				
			
		
							
								
								
									
										23
									
								
								backend/src/util/async.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								backend/src/util/async.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,23 @@ | |||
| /** | ||||
|  * Replace all occurrences of regex in str with the result of asyncFn called with the matching snippet and each of | ||||
|  * the parts matched by a group in the regex as arguments. | ||||
|  * | ||||
|  * @param str The string where to replace the occurrences | ||||
|  * @param regex | ||||
|  * @param replacementFn | ||||
|  */ | ||||
| export async function replaceAsync(str: string, regex: RegExp, replacementFn: (match: string, ...args: string[]) => Promise<string>) { | ||||
|     const promises: Promise<string>[] = []; | ||||
| 
 | ||||
|     // First run through matches: add all Promises resulting from the replacement function
 | ||||
|     str.replace(regex, (full, ...args) => { | ||||
|         promises.push(replacementFn(full, ...args)); | ||||
|         return full; | ||||
|     }); | ||||
| 
 | ||||
|     // Wait for the replacements to get loaded. Reverse them so when popping them, we work in a FIFO manner.
 | ||||
|     const replacements: string[] = (await Promise.all(promises)); | ||||
| 
 | ||||
|     // Second run through matches: Replace them by their previously computed replacements.
 | ||||
|     return str.replace(regex, () => replacements.pop()!!); | ||||
| } | ||||
|  | @ -9,7 +9,15 @@ export function isValidHttpUrl(url: string): boolean { | |||
|     } | ||||
| } | ||||
| 
 | ||||
| export function getUrlStringForLearningObject(learningObjectIdentifier: LearningObjectIdentifier): string { | ||||
| export function getUrlStringForLearningObject(learningObjectId: LearningObjectIdentifier) { | ||||
|     let url = `/learningObject/${learningObjectId.hruid}/html?language=${learningObjectId.language}`; | ||||
|     if (learningObjectId.version) { | ||||
|         url += `&version=${learningObjectId.version}`; | ||||
|     } | ||||
|     return url; | ||||
| } | ||||
| 
 | ||||
| export function getUrlStringForLearningObjectHTML(learningObjectIdentifier: LearningObjectIdentifier): string { | ||||
|     let url = `/learningObject/${learningObjectIdentifier.hruid}/html?language=${learningObjectIdentifier.language}`; | ||||
|     if (learningObjectIdentifier.version) { | ||||
|         url += `&version=${learningObjectIdentifier.version}`; | ||||
|  |  | |||
		Reference in a new issue
	
	 Gerald Schmittinger
						Gerald Schmittinger