refactor(backend): Gebruik EnvVars ipv. process.env
This commit is contained in:
		
							parent
							
								
									9a17762fd4
								
							
						
					
					
						commit
						4fd03cd616
					
				
					 4 changed files with 24 additions and 18 deletions
				
			
		|  | @ -1,12 +1,7 @@ | ||||||
| import { EnvVars, getEnvVar } from './util/envvars.js'; | import { EnvVars, getEnvVar } from './util/envvars.js'; | ||||||
| import { Language } from './entities/content/language.js'; |  | ||||||
| 
 | 
 | ||||||
| // API
 | // API
 | ||||||
| export const DWENGO_API_BASE = getEnvVar(EnvVars.LearningContentRepoApiBaseUrl); | export const DWENGO_API_BASE = getEnvVar(EnvVars.LearningContentRepoApiBaseUrl); | ||||||
| export const FALLBACK_LANG = getEnvVar(EnvVars.FallbackLanguage); | export const FALLBACK_LANG = getEnvVar(EnvVars.FallbackLanguage); | ||||||
| 
 | 
 | ||||||
| // Logging
 |  | ||||||
| export const LOG_LEVEL: string = 'development' === process.env.NODE_ENV ? 'debug' : 'info'; |  | ||||||
| export const LOKI_HOST: string = process.env.LOKI_HOST || 'http://localhost:3102'; |  | ||||||
| 
 |  | ||||||
| export const FALLBACK_SEQ_NUM = 1; | export const FALLBACK_SEQ_NUM = 1; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| import { createLogger, format, Logger as WinstonLogger, transports } from 'winston'; | import { createLogger, format, Logger as WinstonLogger, transports } from 'winston'; | ||||||
| import LokiTransport from 'winston-loki'; | import LokiTransport from 'winston-loki'; | ||||||
| import { LokiLabels } from 'loki-logger-ts'; | import { LokiLabels } from 'loki-logger-ts'; | ||||||
| import { LOG_LEVEL, LOKI_HOST } from '../config.js'; | import { EnvVars, getEnvVar } from '../util/envvars'; | ||||||
| 
 | 
 | ||||||
| export class Logger extends WinstonLogger { | export class Logger extends WinstonLogger { | ||||||
|     constructor() { |     constructor() { | ||||||
|  | @ -22,10 +22,19 @@ function initializeLogger(): Logger { | ||||||
|         return logger; |         return logger; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     const logLevel = getEnvVar(EnvVars.LogLevel); | ||||||
|  | 
 | ||||||
|  |     const consoleTransport = new transports.Console({ | ||||||
|  |         level: getEnvVar(EnvVars.LogLevel), | ||||||
|  |         format: format.combine(format.cli(), format.colorize()), | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     const lokiHost = getEnvVar(EnvVars.LokiHost); | ||||||
|  | 
 | ||||||
|     const lokiTransport: LokiTransport = new LokiTransport({ |     const lokiTransport: LokiTransport = new LokiTransport({ | ||||||
|         host: LOKI_HOST, |         host: lokiHost, | ||||||
|         labels: Labels, |         labels: Labels, | ||||||
|         level: LOG_LEVEL, |         level: logLevel, | ||||||
|         json: true, |         json: true, | ||||||
|         format: format.combine(format.timestamp(), format.json()), |         format: format.combine(format.timestamp(), format.json()), | ||||||
|         onConnectionError: (err) => { |         onConnectionError: (err) => { | ||||||
|  | @ -34,16 +43,11 @@ function initializeLogger(): Logger { | ||||||
|         }, |         }, | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     const consoleTransport = new transports.Console({ |  | ||||||
|         level: LOG_LEVEL, |  | ||||||
|         format: format.combine(format.cli(), format.colorize()), |  | ||||||
|     }); |  | ||||||
| 
 |  | ||||||
|     logger = createLogger({ |     logger = createLogger({ | ||||||
|         transports: [lokiTransport, consoleTransport], |         transports: [lokiTransport, consoleTransport], | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     logger.debug(`Logger initialized with level ${LOG_LEVEL}, Loki host ${LOKI_HOST}`); |     logger.debug(`Logger initialized with level ${logLevel} to Loki host ${lokiHost}`); | ||||||
|     return logger; |     return logger; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,7 +3,6 @@ import { PostgreSqlDriver } from '@mikro-orm/postgresql'; | ||||||
| import { EnvVars, getEnvVar, getNumericEnvVar } from './util/envvars.js'; | import { EnvVars, getEnvVar, getNumericEnvVar } from './util/envvars.js'; | ||||||
| import { SqliteDriver } from '@mikro-orm/sqlite'; | import { SqliteDriver } from '@mikro-orm/sqlite'; | ||||||
| import { MikroOrmLogger } from './logging/mikroOrmLogger.js'; | import { MikroOrmLogger } from './logging/mikroOrmLogger.js'; | ||||||
| import { LOG_LEVEL } from './config.js'; |  | ||||||
| 
 | 
 | ||||||
| // Import alle entity-bestanden handmatig
 | // Import alle entity-bestanden handmatig
 | ||||||
| import { User } from './entities/users/user.entity.js'; | import { User } from './entities/users/user.entity.js'; | ||||||
|  | @ -69,7 +68,7 @@ function config(testingMode: boolean = false): Options { | ||||||
|         // EntitiesTs: entitiesTs,
 |         // EntitiesTs: entitiesTs,
 | ||||||
| 
 | 
 | ||||||
|         // Logging
 |         // Logging
 | ||||||
|         debug: LOG_LEVEL === 'debug', |         debug: getEnvVar(EnvVars.LogLevel) === 'debug', | ||||||
|         loggerFactory: (options: LoggerOptions) => new MikroOrmLogger(options), |         loggerFactory: (options: LoggerOptions) => new MikroOrmLogger(options), | ||||||
|     }; |     }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -4,20 +4,24 @@ const IDP_PREFIX = PREFIX + 'AUTH_'; | ||||||
| const STUDENT_IDP_PREFIX = IDP_PREFIX + 'STUDENT_'; | const STUDENT_IDP_PREFIX = IDP_PREFIX + 'STUDENT_'; | ||||||
| const TEACHER_IDP_PREFIX = IDP_PREFIX + 'TEACHER_'; | const TEACHER_IDP_PREFIX = IDP_PREFIX + 'TEACHER_'; | ||||||
| const CORS_PREFIX = PREFIX + 'CORS_'; | const CORS_PREFIX = PREFIX + 'CORS_'; | ||||||
|  | const LOGGING_PREFIX = PREFIX + 'LOGGING_'; | ||||||
| 
 | 
 | ||||||
| type EnvVar = { key: string; required?: boolean; defaultValue?: any }; | type EnvVar = { key: string; required?: boolean; defaultValue?: any }; | ||||||
| 
 | 
 | ||||||
| export const EnvVars: { [key: string]: EnvVar } = { | export const EnvVars: { [key: string]: EnvVar } = { | ||||||
|     Port: { key: PREFIX + 'PORT', defaultValue: 3000 }, |     Port: { key: PREFIX + 'PORT', defaultValue: 3000 }, | ||||||
|  |     LearningContentRepoApiBaseUrl: { key: PREFIX + 'LEARNING_CONTENT_REPO_API_BASE_URL', defaultValue: 'https://dwengo.org/backend/api' }, | ||||||
|  |     FallbackLanguage: { key: PREFIX + 'FALLBACK_LANGUAGE', defaultValue: 'nl' }, | ||||||
|  |     RunMode: { key: PREFIX + 'RUN_MODE', defaultValue: 'dev' }, | ||||||
|  | 
 | ||||||
|     DbHost: { key: DB_PREFIX + 'HOST', required: true }, |     DbHost: { key: DB_PREFIX + 'HOST', required: true }, | ||||||
|     DbPort: { key: DB_PREFIX + 'PORT', defaultValue: 5432 }, |     DbPort: { key: DB_PREFIX + 'PORT', defaultValue: 5432 }, | ||||||
|     DbName: { key: DB_PREFIX + 'NAME', defaultValue: 'dwengo' }, |     DbName: { key: DB_PREFIX + 'NAME', defaultValue: 'dwengo' }, | ||||||
|     DbUsername: { key: DB_PREFIX + 'USERNAME', required: true }, |     DbUsername: { key: DB_PREFIX + 'USERNAME', required: true }, | ||||||
|     DbPassword: { key: DB_PREFIX + 'PASSWORD', required: true }, |     DbPassword: { key: DB_PREFIX + 'PASSWORD', required: true }, | ||||||
|     DbUpdate: { key: DB_PREFIX + 'UPDATE', defaultValue: false }, |     DbUpdate: { key: DB_PREFIX + 'UPDATE', defaultValue: false }, | ||||||
|     LearningContentRepoApiBaseUrl: { key: PREFIX + 'LEARNING_CONTENT_REPO_API_BASE_URL', defaultValue: 'https://dwengo.org/backend/api' }, |  | ||||||
|     FallbackLanguage: { key: PREFIX + 'FALLBACK_LANGUAGE', defaultValue: 'nl' }, |  | ||||||
|     UserContentPrefix: { key: DB_PREFIX + 'USER_CONTENT_PREFIX', defaultValue: 'u_' }, |     UserContentPrefix: { key: DB_PREFIX + 'USER_CONTENT_PREFIX', defaultValue: 'u_' }, | ||||||
|  | 
 | ||||||
|     IdpStudentUrl: { key: STUDENT_IDP_PREFIX + 'URL', required: true }, |     IdpStudentUrl: { key: STUDENT_IDP_PREFIX + 'URL', required: true }, | ||||||
|     IdpStudentClientId: { key: STUDENT_IDP_PREFIX + 'CLIENT_ID', required: true }, |     IdpStudentClientId: { key: STUDENT_IDP_PREFIX + 'CLIENT_ID', required: true }, | ||||||
|     IdpStudentJwksEndpoint: { key: STUDENT_IDP_PREFIX + 'JWKS_ENDPOINT', required: true }, |     IdpStudentJwksEndpoint: { key: STUDENT_IDP_PREFIX + 'JWKS_ENDPOINT', required: true }, | ||||||
|  | @ -25,8 +29,12 @@ export const EnvVars: { [key: string]: EnvVar } = { | ||||||
|     IdpTeacherClientId: { key: TEACHER_IDP_PREFIX + 'CLIENT_ID', required: true }, |     IdpTeacherClientId: { key: TEACHER_IDP_PREFIX + 'CLIENT_ID', required: true }, | ||||||
|     IdpTeacherJwksEndpoint: { key: TEACHER_IDP_PREFIX + 'JWKS_ENDPOINT', required: true }, |     IdpTeacherJwksEndpoint: { key: TEACHER_IDP_PREFIX + 'JWKS_ENDPOINT', required: true }, | ||||||
|     IdpAudience: { key: IDP_PREFIX + 'AUDIENCE', defaultValue: 'account' }, |     IdpAudience: { key: IDP_PREFIX + 'AUDIENCE', defaultValue: 'account' }, | ||||||
|  | 
 | ||||||
|     CorsAllowedOrigins: { key: CORS_PREFIX + 'ALLOWED_ORIGINS', defaultValue: '' }, |     CorsAllowedOrigins: { key: CORS_PREFIX + 'ALLOWED_ORIGINS', defaultValue: '' }, | ||||||
|     CorsAllowedHeaders: { key: CORS_PREFIX + 'ALLOWED_HEADERS', defaultValue: 'Authorization,Content-Type' }, |     CorsAllowedHeaders: { key: CORS_PREFIX + 'ALLOWED_HEADERS', defaultValue: 'Authorization,Content-Type' }, | ||||||
|  | 
 | ||||||
|  |     LogLevel: { key: LOGGING_PREFIX + 'LEVEL', defaultValue: 'info' }, | ||||||
|  |     LokiHost: { key: LOGGING_PREFIX + 'LOKI_HOST', defaultValue: 'http://localhost:3102' }, | ||||||
| } as const; | } as const; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  |  | ||||||
		Reference in a new issue