diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts index f64837f..2322743 100644 --- a/backend/src/app.module.ts +++ b/backend/src/app.module.ts @@ -20,12 +20,12 @@ import { UserModule } from "./user/user.module"; @Module({ imports: [ + ConfigModule, AuthModule, ShareModule, FileModule, EmailModule, PrismaModule, - ConfigModule, JobsModule, UserModule, ThrottlerModule.forRoot([ diff --git a/backend/src/config/config.module.ts b/backend/src/config/config.module.ts index 5a84b24..35c9f33 100644 --- a/backend/src/config/config.module.ts +++ b/backend/src/config/config.module.ts @@ -1,4 +1,5 @@ import { Global, Module } from "@nestjs/common"; +import { Config } from "@prisma/client"; import { EmailModule } from "src/email/email.module"; import { PrismaService } from "src/prisma/prisma.service"; import { ConfigController } from "./config.controller"; @@ -16,7 +17,15 @@ import { LogoService } from "./logo.service"; }, inject: [PrismaService], }, - ConfigService, + { + provide: ConfigService, + useFactory: async (prisma: PrismaService, configVariables: Config[]) => { + const configService = new ConfigService(configVariables, prisma); + await configService.initialize(); + return configService; + }, + inject: [PrismaService, "CONFIG_VARIABLES"], + }, LogoService, ], controllers: [ConfigController], diff --git a/backend/src/config/config.service.ts b/backend/src/config/config.service.ts index 2088c6d..6ec3378 100644 --- a/backend/src/config/config.service.ts +++ b/backend/src/config/config.service.ts @@ -30,7 +30,8 @@ export class ConfigService extends EventEmitter { super(); } - async onModuleInit() { + // Initialize gets called by the ConfigModule + async initialize() { await this.loadYamlConfig(); if (this.yamlConfig) { @@ -49,12 +50,13 @@ export class ConfigService extends EventEmitter { } try { this.yamlConfig = yamlParse(configFile); + if (this.yamlConfig) { for (const configVariable of this.configVariables) { const category = this.yamlConfig[configVariable.category]; if (!category) continue; - configVariable.value = category[configVariable.name]; + this.emit("update", configVariable.name, configVariable.value); } } } catch (e) {