SettingsHelper
This commit is contained in:
parent
f850fc2526
commit
f32143b7ac
15 changed files with 199 additions and 49 deletions
57
src/helpers/settingsHelper.ts
Normal file
57
src/helpers/settingsHelper.ts
Normal file
|
@ -0,0 +1,57 @@
|
|||
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 == "";
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue