import { Module } from '@nestjs/common' import { ConfigModule, ConfigService } from '@nestjs/config' import { TypeOrmModule } from '@nestjs/typeorm' import * as Joi from 'joi' import { ScheduleModule } from '@nestjs/schedule' import { AuthModule } from './auth/auth.module' import { ChatModule } from './chat/chat.module' import { PongModule } from './pong/pong.module' import { UsersModule } from './users/users.module' @Module({ imports: [ ScheduleModule.forRoot(), ConfigModule.forRoot({ validationSchema: Joi.object({ POSTGRES_HOST: Joi.string().required(), POSTGRES_PORT: Joi.number().required(), POSTGRES_USER: Joi.string().required(), POSTGRES_PASSWORD: Joi.string().required(), POSTGRES_DB: Joi.string().required(), MAIL_USER: Joi.string().required(), MAIL_PASSWORD: Joi.string().required(), JWT_SECRET: Joi.string().required(), JWT_EXPIRATION_TIME: Joi.string().required(), HOST: Joi.string().required(), FRONT_PORT: Joi.number().required(), BACK_PORT: Joi.number().required(), HASH_SALT: Joi.number().required() }) }), TypeOrmModule.forRootAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: (configService: ConfigService) => ({ type: 'postgres', host: configService.get('POSTGRES_HOST'), port: configService.get('POSTGRES_PORT'), username: configService.get('POSTGRES_USER'), password: configService.get('POSTGRES_PASSWORD'), database: configService.get('POSTGRES_DB'), jwt_secret: configService.get('JWT_SECRET'), autoLoadEntities: true, synchronize: true }) }), AuthModule, ChatModule, PongModule, UsersModule ] }) export class AppModule {}