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:
Gerald Schmittinger 2025-02-21 00:24:10 +01:00
parent c07bb959cf
commit 62a278a6e0
8 changed files with 86 additions and 10 deletions

View 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;
}
}