import { AppController } from "./app.controller"; import { AppService } from "./app.service"; import { Permission, Role } from "./entities"; import { AuthGuard, PermissionGuard } from "./guards"; import { InitialDataSeederService } from "./helpers/seeders/initialData"; import { RequestSeedMiddleware } from "./middlewares/request-seed.middleware"; import { AuthModule } from "./schemas/auth/auth.module"; import { FilesModule } from "./schemas/files/files.module"; import { MetadataModule } from "./schemas/metadata/metadata.module"; import { PermissionsModule } from "./schemas/permissions/permissions.module"; import { RolesModule } from "./schemas/roles/roles.module"; import { UsersModule } from "./schemas/users/users.module"; /* eslint-disable @typescript-eslint/no-unused-vars */ import { MiddlewareConsumer, Module, NestModule } from "@nestjs/common"; import { APP_FILTER, APP_GUARD } from "@nestjs/core"; import { JwtModule } from "@nestjs/jwt"; import { ClsModule } from "nestjs-cls"; NOTIFICATION_ENTITY_IMPORT_PLACEHOLDER FORM_OF_FORMS_IMPORT_PLACEHOLDER SUPPORT_IMPORT_PLACEHOLDER CONSERVATION_IMPORT_PLACEHOLDER ACTIVITY_TRACKER_IMPORT_PLACEHOLDER DB_LOGGING_IMPORT_PLACEHOLDER APP_HEALTH_CHECK_IMPORT_PLACEHOLDER DUMMY_DATA_MODULES_IMPORT_PLACEHOLDER DATABASE_IMPORT_PLACEHOLDER MAILER_IMPORT_PLACEHOLDER @Module({ imports: [ // ===== configs ===== DATABASE_CONFIG_PLACEHOLDER // ===== tables ===== // --- base tables (never delete them) --- RolesModule, PermissionsModule, MetadataModule, APP_HEALTH_CHECK_MODULE_INCLUSION_PLACEHOLDER FilesModule, UsersModule, ClsModule.forRoot({ global: true, middleware: { mount: true }, // attach CLS store to each request }), // --- app tables --- // --- app repositories --- TypeOrmModule.forFeature([Role]), TypeOrmModule.forFeature([Permission]), // ===== services ===== NOTIFICATIONS_MODULE_INCLUSION_PLACEHOLDER FORM_OF_FORMS_MODULE_INCLUSION_PLACEHOLDER SUPPORT_MODULE_INCLUSION_PLACEHOLDER CONSERVATION_MODULE_INCLUSION_PLACEHOLDER ACTIVITY_TRACKER_MODULE_INCLUSION_PLACEHOLDER DB_LOGGING_MODULE_PLACEHOLDER MAILER_CONFIG_PLACEHOLDER // --- jwt --- AuthModule, JwtModule.register({ global: true, secret: process.env.JWT_SECRET_PLACEHOLDER, signOptions: { expiresIn: "1d" }, }), ], providers: [ { provide: APP_GUARD, useClass: AuthGuard, }, { provide: APP_GUARD, useClass: PermissionGuard, }, DB_LOGGING_FILTER_PLACEHOLDER DUMMY_DATA_MODULES_CALL_PLACEHOLDER AppService, InitialDataSeederService ], controllers: [AppController], exports: [AppService], }) export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer) { consumer.apply(RequestSeedMiddleware).forRoutes("*"); } }