web-service/apps/auth/src/auth.module.ts

67 lines
2.0 KiB
TypeScript

import { Module, OnModuleInit } from '@nestjs/common';
import { AuthController } from './auth.controller';
import { AuthService } from './services/auth.service';
import { ClientsModule } from '@nestjs/microservices';
import {
getCacheManager,
getTypeOrm,
makeKnex,
makeTypeOrm,
natsClient,
} from '@freeblox/shared';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import knex from 'knex';
import { security } from './config/security.config';
import { keysProviders } from './providers/keys.providers';
import { JWTService } from './services/jwt.service';
import { UserEntity } from './database/entities/user.entity';
import { UserTokenEntity } from './database/entities/user-token.entity';
import { OTPService } from './services/otp.service';
import { BanEntity } from './database/entities/ban.entity';
import { BanService } from './services/ban.service';
import { PrivilegeEntity } from './database/entities/privilege.entity';
import { RoleService } from './services/role.service';
import { RoleEntity } from './database/entities/role.entity';
import { RefreshService } from './services/refresh.service';
const entities = [
UserEntity,
UserTokenEntity,
BanEntity,
PrivilegeEntity,
RoleEntity,
];
@Module({
imports: [
ConfigModule.forRoot({
ignoreEnvFile: process.env.NODE_ENV === 'development',
load: [makeKnex('auth', __dirname), makeTypeOrm('auth'), security],
}),
getTypeOrm(entities),
getCacheManager(),
TypeOrmModule.forFeature(entities),
ClientsModule.register([natsClient('auth')]),
],
controllers: [AuthController],
providers: [
...keysProviders,
JWTService,
OTPService,
BanService,
RoleService,
RefreshService,
AuthService,
],
})
export class AuthModule implements OnModuleInit {
constructor(private readonly config: ConfigService) {}
async onModuleInit() {
const knexInstance = knex(this.config.get('knex'));
await knexInstance.migrate.latest();
await knexInstance.seed.run();
}
}