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