config.ts

 avatar
unknown
plain_text
a year ago
1.1 kB
2
Indexable
import fs from 'fs';

import dotenv from 'dotenv';

class Config {
  private static configFile = '/etc/configs/config.json';

  private static loadDotEnv() {
    if (fs.existsSync('/vault/secrets/')) {
      dotenv.config({ path: '/vault/secrets/keys' });
    } else {
      dotenv.config();
    }
  }

  public static getConfig(): Record<string, string | undefined> {
    this.loadDotEnv();
    let config: Record<string, string | undefined>;

    if (fs.existsSync(this.configFile)) {
      config = JSON.parse(fs.readFileSync(this.configFile, 'utf-8'));
    } else {
      config = {
        SERVER_OTHER_SERVICES_ADDRESS: process.env.SERVER_OTHER_SERVICES_ADDRESS,
        PORT: process.env.PORT,
        SERVER_USERS: process.env.SERVER_USERS,
        SERVER_CARS: process.env.SERVER_CARS,
        SERVER_ACCOMMODATION: process.env.SERVER_ACCOMMODATION,
        BASE_URL: `${process.env.BASE_URL}:${process.env.PORT}`,
        EXTERNAL_LINK: process.env.EXTERNAL_LINK,
        ENVIRONMENT: process.env.ENVIRONMENT,
      };
    }

    return config;
  }
}

export default Config;
Editor is loading...
Leave a Comment