Files
dailytrends/src/config/config.ts
2025-07-28 13:45:16 +02:00

49 lines
998 B
TypeScript

export interface IConfig {
mongodbUri: string;
nodeEnv: string;
}
class Config implements IConfig {
private static instance: Config;
public readonly mongodbUri: string;
public readonly nodeEnv: string;
private constructor() {
this.mongodbUri = process.env.MONGODB_URI || 'mongodb://localhost:27017/dailytrends';
this.nodeEnv = process.env.NODE_ENV || 'development';
this.validateConfig();
}
public static getInstance(): Config {
if (!Config.instance) {
Config.instance = new Config();
}
return Config.instance;
}
private validateConfig(): void {
if (!this.mongodbUri) {
throw new Error('MONGODB_URI is required');
}
}
public isDevelopment(): boolean {
return this.nodeEnv === 'development';
}
public isProduction(): boolean {
return this.nodeEnv === 'production';
}
public isTest(): boolean {
return this.nodeEnv === 'test';
}
}
export const config = Config.getInstance();
export default config;