From 70edd165ee37fee68e6258e5451d0928fbcb52e7 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Fri, 25 Apr 2025 08:07:53 +0200 Subject: [PATCH] typesave set Setting --- src/helpers/settingsHelper.ts | 12 ++++++++---- .../1745059495808-settingsFromEnv.ts | 18 +++++++++++------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/helpers/settingsHelper.ts b/src/helpers/settingsHelper.ts index 8418cab..63fcf66 100644 --- a/src/helpers/settingsHelper.ts +++ b/src/helpers/settingsHelper.ts @@ -64,17 +64,19 @@ export default abstract class SettingHelper { * @param key The key of the setting * @param value The value to set */ - public static async setSetting(key: SettingString, value: string): Promise { + public static async setSetting(key: K, value: SettingValueMapping[K]): Promise { if (value === undefined || value === null) return; + const stringValue = String(value); + const settingType = settingsType[key]; - this.validateSetting(key, value); + this.validateSetting(key, stringValue); const oldValue = this.getSetting(key); - let finalValue = value; + let finalValue = stringValue; if (typeof settingType.type === "string" && settingType.type.includes("/crypt")) { - finalValue = CodingHelper.encrypt(APPLICATION_SECRET, value); + finalValue = CodingHelper.encrypt(APPLICATION_SECRET, stringValue); } this.settings[key] = finalValue; @@ -95,6 +97,8 @@ export default abstract class SettingHelper { * @param key The key of the setting */ public static async resetSetting(key: SettingString): Promise { + if (this.getSetting(key) == String(settingsType[key].default ?? "")) return; + const oldValue = this.getSetting(key); const settingType = settingsType[key]; diff --git a/src/migrations/1745059495808-settingsFromEnv.ts b/src/migrations/1745059495808-settingsFromEnv.ts index ca5192b..6028f1d 100644 --- a/src/migrations/1745059495808-settingsFromEnv.ts +++ b/src/migrations/1745059495808-settingsFromEnv.ts @@ -1,6 +1,7 @@ import { MigrationInterface, QueryRunner } from "typeorm"; import { setting_table } from "./baseSchemaTables/admin"; import SettingHelper from "../helpers/settingsHelper"; +import ms from "ms"; export class SettingsFromEnv1745059495808 implements MigrationInterface { name = "SettingsFromEnv1745059495808"; @@ -11,16 +12,19 @@ export class SettingsFromEnv1745059495808 implements MigrationInterface { //transfer settings of env to database await SettingHelper.setSetting("club.name", process.env.CLUB_NAME); await SettingHelper.setSetting("club.website", process.env.CLUB_WEBSITE); - await SettingHelper.setSetting("session.jwt_expiration", process.env.JWT_EXPIRATION); - await SettingHelper.setSetting("session.refresh_expiration", process.env.REFRESH_EXPIRATION); - await SettingHelper.setSetting("session.pwa_refresh_expiration", process.env.PWA_REFRESH_EXPIRATION); + await SettingHelper.setSetting("session.jwt_expiration", process.env.JWT_EXPIRATION as ms.StringValue); + await SettingHelper.setSetting("session.refresh_expiration", process.env.REFRESH_EXPIRATION as ms.StringValue); + await SettingHelper.setSetting( + "session.pwa_refresh_expiration", + process.env.PWA_REFRESH_EXPIRATION as ms.StringValue + ); await SettingHelper.setSetting("mail.username", process.env.MAIL_USERNAME); await SettingHelper.setSetting("mail.password", process.env.MAIL_PASSWORD); await SettingHelper.setSetting("mail.host", process.env.MAIL_HOST); - await SettingHelper.setSetting("mail.port", process.env.MAIL_PORT); - await SettingHelper.setSetting("mail.secure", process.env.MAIL_SECURE); - await SettingHelper.setSetting("backup.interval", process.env.BACKUP_INTERVAL); - await SettingHelper.setSetting("backup.copies", process.env.BACKUP_COPIES); + await SettingHelper.setSetting("mail.port", Number(process.env.MAIL_PORT)); + await SettingHelper.setSetting("mail.secure", Boolean(process.env.MAIL_SECURE)); + await SettingHelper.setSetting("backup.interval", Number(process.env.BACKUP_INTERVAL)); + await SettingHelper.setSetting("backup.copies", Number(process.env.BACKUP_COPIES)); } public async down(queryRunner: QueryRunner): Promise {