typesave set Setting

This commit is contained in:
Julian Krauser 2025-04-25 08:07:53 +02:00
parent b4a7986c8a
commit 70edd165ee
2 changed files with 19 additions and 11 deletions

View file

@ -64,17 +64,19 @@ export default abstract class SettingHelper {
* @param key The key of the setting * @param key The key of the setting
* @param value The value to set * @param value The value to set
*/ */
public static async setSetting(key: SettingString, value: string): Promise<void> { public static async setSetting<K extends SettingString>(key: K, value: SettingValueMapping[K]): Promise<void> {
if (value === undefined || value === null) return; if (value === undefined || value === null) return;
const stringValue = String(value);
const settingType = settingsType[key]; const settingType = settingsType[key];
this.validateSetting(key, value); this.validateSetting(key, stringValue);
const oldValue = this.getSetting(key); const oldValue = this.getSetting(key);
let finalValue = value; let finalValue = stringValue;
if (typeof settingType.type === "string" && settingType.type.includes("/crypt")) { 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; this.settings[key] = finalValue;
@ -95,6 +97,8 @@ export default abstract class SettingHelper {
* @param key The key of the setting * @param key The key of the setting
*/ */
public static async resetSetting(key: SettingString): Promise<void> { public static async resetSetting(key: SettingString): Promise<void> {
if (this.getSetting(key) == String(settingsType[key].default ?? "")) return;
const oldValue = this.getSetting(key); const oldValue = this.getSetting(key);
const settingType = settingsType[key]; const settingType = settingsType[key];

View file

@ -1,6 +1,7 @@
import { MigrationInterface, QueryRunner } from "typeorm"; import { MigrationInterface, QueryRunner } from "typeorm";
import { setting_table } from "./baseSchemaTables/admin"; import { setting_table } from "./baseSchemaTables/admin";
import SettingHelper from "../helpers/settingsHelper"; import SettingHelper from "../helpers/settingsHelper";
import ms from "ms";
export class SettingsFromEnv1745059495808 implements MigrationInterface { export class SettingsFromEnv1745059495808 implements MigrationInterface {
name = "SettingsFromEnv1745059495808"; name = "SettingsFromEnv1745059495808";
@ -11,16 +12,19 @@ export class SettingsFromEnv1745059495808 implements MigrationInterface {
//transfer settings of env to database //transfer settings of env to database
await SettingHelper.setSetting("club.name", process.env.CLUB_NAME); await SettingHelper.setSetting("club.name", process.env.CLUB_NAME);
await SettingHelper.setSetting("club.website", process.env.CLUB_WEBSITE); await SettingHelper.setSetting("club.website", process.env.CLUB_WEBSITE);
await SettingHelper.setSetting("session.jwt_expiration", process.env.JWT_EXPIRATION); await SettingHelper.setSetting("session.jwt_expiration", process.env.JWT_EXPIRATION as ms.StringValue);
await SettingHelper.setSetting("session.refresh_expiration", process.env.REFRESH_EXPIRATION); 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); 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.username", process.env.MAIL_USERNAME);
await SettingHelper.setSetting("mail.password", process.env.MAIL_PASSWORD); await SettingHelper.setSetting("mail.password", process.env.MAIL_PASSWORD);
await SettingHelper.setSetting("mail.host", process.env.MAIL_HOST); await SettingHelper.setSetting("mail.host", process.env.MAIL_HOST);
await SettingHelper.setSetting("mail.port", process.env.MAIL_PORT); await SettingHelper.setSetting("mail.port", Number(process.env.MAIL_PORT));
await SettingHelper.setSetting("mail.secure", process.env.MAIL_SECURE); await SettingHelper.setSetting("mail.secure", Boolean(process.env.MAIL_SECURE));
await SettingHelper.setSetting("backup.interval", process.env.BACKUP_INTERVAL); await SettingHelper.setSetting("backup.interval", Number(process.env.BACKUP_INTERVAL));
await SettingHelper.setSetting("backup.copies", process.env.BACKUP_COPIES); await SettingHelper.setSetting("backup.copies", Number(process.env.BACKUP_COPIES));
} }
public async down(queryRunner: QueryRunner): Promise<void> { public async down(queryRunner: QueryRunner): Promise<void> {