ff-admin-server/src/helpers/settingsHelper.ts

58 lines
2.1 KiB
TypeScript
Raw Normal View History

2025-04-19 11:26:35 +02:00
import ms from "ms";
import { EnvSettingString, envSettingsType, SettingString, settingsType } from "../type/settingTypes";
export abstract class SettingHelper {
private static settings: { [key in SettingString]?: string } = {};
private static envSettings: { [key in EnvSettingString]?: string } = {};
public static getSetting(key: SettingString): string | number | boolean | ms.StringValue {
let settingType = settingsType[key];
return this.settings[key] ?? settingType.default ?? "";
}
public static getEnvSetting(key: EnvSettingString): string {
let settingType = envSettingsType[key];
return this.envSettings[key] ?? settingType.default ?? "";
}
public static async configure() {}
public static async configurEnv() {
this.envSettings = {
"database.type": process.env.DB_TYPE,
"database.host": process.env.DB_HOST,
"database.port": process.env.DB_PORT,
"database.name": process.env.DB_NAME,
"database.username": process.env.DB_USERNAME,
"database.password": process.env.DB_PASSWORD,
};
this.checkEnvSettings();
}
private static checkEnvSettings() {
if (!["mysql", "sqlite", "postgres"].includes(this.envSettings["database.type"]))
throw new Error("set valid value to DB_TYPE (mysql|sqlite|postgres)");
if (this.checkIfEmptyOrNotString(this.envSettings["database.name"]))
throw new Error("set valid value to DB_NAME (name of database or filepath for sqlite)");
if (
this.checkIfEmptyOrNotString(this.envSettings["database.host"]) &&
this.envSettings["database.type"] != "sqlite"
)
throw new Error("set valid value to DB_HOST");
if (
this.checkIfEmptyOrNotString(this.envSettings["database.username"]) &&
this.envSettings["database.type"] != "sqlite"
)
throw new Error("set valid value to DB_USERNAME");
if (
this.checkIfEmptyOrNotString(this.envSettings["database.password"]) &&
this.envSettings["database.type"] != "sqlite"
)
throw new Error("set valid value to DB_PASSWORD");
}
private static checkIfEmptyOrNotString(val: any) {
return typeof val != "string" || val == "";
}
}