mirror of
https://github.com/zebrajr/Reactive-Resume.git
synced 2025-12-06 12:20:18 +01:00
73 lines
2.2 KiB
TypeScript
73 lines
2.2 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { ConfigModule as NestConfigModule } from '@nestjs/config';
|
|
import Joi from 'joi';
|
|
|
|
import appConfig from './app.config';
|
|
import authConfig from './auth.config';
|
|
import cacheConfig from './cache.config';
|
|
import databaseConfig from './database.config';
|
|
import googleConfig from './google.config';
|
|
import mailConfig from './mail.config';
|
|
import storageConfig from './storage.config';
|
|
|
|
const validationSchema = Joi.object({
|
|
// App
|
|
TZ: Joi.string().default('UTC'),
|
|
PORT: Joi.number().default(3100),
|
|
VERSION: Joi.string().required(),
|
|
SECRET_KEY: Joi.string().required(),
|
|
NODE_ENV: Joi.string().valid('development', 'production').default('development'),
|
|
|
|
// URLs
|
|
PUBLIC_URL: Joi.string().default('http://localhost:3000'),
|
|
PUBLIC_SERVER_URL: Joi.string().default('http://localhost:3100'),
|
|
|
|
// Database
|
|
POSTGRES_HOST: Joi.string().required(),
|
|
POSTGRES_PORT: Joi.number().default(5432),
|
|
POSTGRES_DB: Joi.string().required(),
|
|
POSTGRES_USER: Joi.string().required(),
|
|
POSTGRES_PASSWORD: Joi.string().required(),
|
|
POSTGRES_SSL_CERT: Joi.string().allow(''),
|
|
|
|
// Auth
|
|
JWT_SECRET: Joi.string().required(),
|
|
JWT_EXPIRY_TIME: Joi.number().required(),
|
|
|
|
// Google
|
|
GOOGLE_API_KEY: Joi.string().allow(''),
|
|
GOOGLE_CLIENT_SECRET: Joi.string().allow(''),
|
|
PUBLIC_GOOGLE_CLIENT_ID: Joi.string().allow(''),
|
|
|
|
// Mail
|
|
MAIL_FROM_NAME: Joi.string().allow(''),
|
|
MAIL_FROM_EMAIL: Joi.string().allow(''),
|
|
MAIL_HOST: Joi.string().allow(''),
|
|
MAIL_PORT: Joi.string().allow(''),
|
|
MAIL_USERNAME: Joi.string().allow(''),
|
|
MAIL_PASSWORD: Joi.string().allow(''),
|
|
|
|
// Storage
|
|
STORAGE_BUCKET: Joi.string().allow(''),
|
|
STORAGE_REGION: Joi.string().allow(''),
|
|
STORAGE_ENDPOINT: Joi.string().allow(''),
|
|
STORAGE_URL_PREFIX: Joi.string().allow(''),
|
|
STORAGE_ACCESS_KEY: Joi.string().allow(''),
|
|
STORAGE_SECRET_KEY: Joi.string().allow(''),
|
|
|
|
// Cache
|
|
PDF_DELETION_TIME: Joi.number()
|
|
.default(4 * 24 * 60 * 60 * 1000) // 4 days
|
|
.allow(''),
|
|
});
|
|
|
|
@Module({
|
|
imports: [
|
|
NestConfigModule.forRoot({
|
|
load: [appConfig, authConfig, cacheConfig, databaseConfig, googleConfig, mailConfig, storageConfig],
|
|
validationSchema: validationSchema,
|
|
}),
|
|
],
|
|
})
|
|
export class ConfigModule {}
|