diff --git a/ExpressAPI/src/config/Config.ts b/ExpressAPI/src/config/Config.ts new file mode 100644 index 0000000000000000000000000000000000000000..980b12f686a3f6d5b62053e1763a0e7c266f2216 --- /dev/null +++ b/ExpressAPI/src/config/Config.ts @@ -0,0 +1,49 @@ +class Config { + private static _instance: Config; + + public readonly api: { + port: number + }; + + public readonly database: { + type: string, host: string, port: number, user: string, password: string, database: string + }; + + public readonly jwtSecretKey: string; + public readonly sessionTimeout: number; + + public readonly userPasswordLength: number; + public readonly userPasswordSaltRounds: number; + + private constructor() { + this.api = { + port: Number(process.env.API_PORT) + }; + + this.database = { + type : process.env.DATABASE_TYPE, + host : process.env.DATABASE_HOST, + port : Number(process.env.DATABASE_PORT), + user : process.env.DATABASE_USER, + password: process.env.DATABASE_PASSWORD, + database: process.env.DATABASE_NAME + }; + + this.jwtSecretKey = process.env.JWT_SECRET_KEY; + this.sessionTimeout = Number(process.env.SESSION_TIMEOUT); + + this.userPasswordLength = Number(process.env.USER_PASSWORD_LENGTH); + this.userPasswordSaltRounds = Number(process.env.USER_PASSWORD_SALT_ROUNDS); + } + + public static get instance(): Config { + if ( !Config._instance ) { + Config._instance = new Config(); + } + + return Config._instance; + } +} + + +export default Config.instance;