feat(backend): Databank initialiseren
Verbinding met databank aangemaakt, eerste entities toegevoegd, centrale API aangemaakt om omgevingsvariabelen voor onze app op te vragen.
This commit is contained in:
		
							parent
							
								
									c07bb959cf
								
							
						
					
					
						commit
						62a278a6e0
					
				
					 8 changed files with 86 additions and 10 deletions
				
			
		
							
								
								
									
										42
									
								
								backend/src/util/envvars.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								backend/src/util/envvars.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,42 @@ | |||
| const PREFIX = "DWENGO_"; | ||||
| const DB_PREFIX = PREFIX + "DB_"; | ||||
| 
 | ||||
| type EnvVar = {[key: string]: {name: string, required?: boolean, defaultValue?: boolean}}; | ||||
| 
 | ||||
| export const EnvVars: EnvVar = { | ||||
|     DbHost: {key: DB_PREFIX + "HOST", required: true}, | ||||
|     DbPort: {key: DB_PREFIX + "PORT", defaultValue: 5432}, | ||||
|     DbName: {key: DB_PREFIX + "NAME", defaultValue: "dwengo"}, | ||||
|     DbUsername: {key: DB_PREFIX + "USERNAME", required: true}, | ||||
|     DbPassword: {key: DB_PREFIX + "PASSWORD", required: true}, | ||||
|     DbUpdate: {key: DB_PREFIX + "UPDATE", defaultValue: false}, | ||||
| } as const; | ||||
| 
 | ||||
| /** | ||||
|  * Returns the value of the given environment variable if it is set. | ||||
|  * Otherwise, | ||||
|  * - throw an error if the environment variable was required, | ||||
|  * - return the default value if there is one and it was not required, | ||||
|  * - return an empty string if the environment variable is not required and there is also no default. | ||||
|  * @param envVar The properties of the environment variable (from the EnvVar object). | ||||
|  */ | ||||
| export function getEnvVar(envVar: EnvVar): string { | ||||
|     const value: string | undefined = process.env[envVar.key]; | ||||
|     if (value) { | ||||
|         return value; | ||||
|     } else if (envVar.required) { | ||||
|         throw new Error(`Missing environment variable: ${envVar.key}`); | ||||
|     } else { | ||||
|         return envVar.defaultValue || ""; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| export function getNumericEnvVar(envVar: EnvVar): number { | ||||
|     const valueString = getEnvVar(envVar); | ||||
|     const value = parseInt(valueString); | ||||
|     if (isNaN(value)) { | ||||
|         throw new Error(`Invalid value for environment variable ${envVar.key}: ${valueString}. Expected a number.`) | ||||
|     } else { | ||||
|         return value; | ||||
|     } | ||||
| } | ||||
		Reference in a new issue
	
	 Gerald Schmittinger
						Gerald Schmittinger