mirror of https://github.com/ghostfolio/ghostfolio
Browse Source
* Simplify initial project setup * Added a validation for environment variables * Added support for feature flags to simplify the initial project setup * Add configuration service to test * Optimize data gathering and exchange rate calculation (#14) * Clean up changelogpull/15/head
Thomas
4 years ago
committed by
GitHub
43 changed files with 310 additions and 161 deletions
@ -0,0 +1,32 @@ |
|||
import { Injectable } from '@nestjs/common'; |
|||
import { bool, cleanEnv, num, port, str } from 'envalid'; |
|||
|
|||
import { Environment } from './interfaces/environment.interface'; |
|||
|
|||
@Injectable() |
|||
export class ConfigurationService { |
|||
private readonly environmentConfiguration: Environment; |
|||
|
|||
public constructor() { |
|||
this.environmentConfiguration = cleanEnv(process.env, { |
|||
ACCESS_TOKEN_SALT: str(), |
|||
ALPHA_VANTAGE_API_KEY: str({ default: '' }), |
|||
CACHE_TTL: num({ default: 1 }), |
|||
ENABLE_FEATURE_FEAR_AND_GREED_INDEX: bool({ default: false }), |
|||
ENABLE_FEATURE_SOCIAL_LOGIN: bool({ default: false }), |
|||
GOOGLE_CLIENT_ID: str({ default: 'dummyClientId' }), |
|||
GOOGLE_SECRET: str({ default: 'dummySecret' }), |
|||
JWT_SECRET_KEY: str({}), |
|||
MAX_ITEM_IN_CACHE: num({ default: 9999 }), |
|||
PORT: port({ default: 3333 }), |
|||
RAKUTEN_RAPID_API_KEY: str({ default: '' }), |
|||
REDIS_HOST: str({ default: 'localhost' }), |
|||
REDIS_PORT: port({ default: 6379 }), |
|||
ROOT_URL: str({ default: 'http://localhost:4200' }) |
|||
}); |
|||
} |
|||
|
|||
public get<K extends keyof Environment>(key: K): Environment[K] { |
|||
return this.environmentConfiguration[key]; |
|||
} |
|||
} |
@ -0,0 +1,18 @@ |
|||
import { CleanedEnvAccessors } from 'envalid'; |
|||
|
|||
export interface Environment extends CleanedEnvAccessors { |
|||
ACCESS_TOKEN_SALT: string; |
|||
ALPHA_VANTAGE_API_KEY: string; |
|||
CACHE_TTL: number; |
|||
ENABLE_FEATURE_FEAR_AND_GREED_INDEX: boolean; |
|||
ENABLE_FEATURE_SOCIAL_LOGIN: boolean; |
|||
GOOGLE_CLIENT_ID: string; |
|||
GOOGLE_SECRET: string; |
|||
JWT_SECRET_KEY: string; |
|||
MAX_ITEM_IN_CACHE: number; |
|||
PORT: number; |
|||
RAKUTEN_RAPID_API_KEY: string; |
|||
REDIS_HOST: string; |
|||
REDIS_PORT: number; |
|||
ROOT_URL: string; |
|||
} |
Loading…
Reference in new issue