Files
negareh-api/src/app.module.ts
T
2026-07-02 16:33:17 +03:30

66 lines
2.5 KiB
TypeScript

import { MikroOrmModule } from '@mikro-orm/nestjs';
import { Module } from '@nestjs/common';
import dataBaseConfig from './config/mikro-orm.config';
import { ConfigModule } from '@nestjs/config';
import { UserModule } from './modules/user/user.module';
import { UtilsModule } from './modules/util/utils.module';
import { AuthModule } from './modules/auth/auth.module';
import { UploaderModule } from './modules/uploader/uploader.module';
import { AdminModule } from './modules/admin/admin.module';
import { ThrottlerModule } from '@nestjs/throttler';
import { ScheduleModule } from '@nestjs/schedule';
import { ProductModule } from './modules/product/product.module';
import { RolesModule } from './modules/roles/roles.module';
import { PaymentModule } from './modules/payment/payments.module';
import { NotificationsModule } from './modules/notification/notifications.module';
import { EventEmitterModule } from '@nestjs/event-emitter';
import { CacheModule } from '@nestjs/cache-manager';
import { PrintFormModule } from './modules/print-form/print-form.module';
import { FormBuilderModule } from './modules/form-builder/form-builder.module';
import { RequestModule } from './modules/request/request.module';
import { InvoiceModule } from './modules/invoice/invoice.module';
import { OrderModule } from './modules/order/order.module';
import { LearningModule } from './modules/learnings/learning.module';
import { CriticismModule } from './modules/criticisms/criticisms.module';
import { AnnouncementModule } from './modules/announcements/announcement.module';
import { TicketModule } from './modules/ticket/ticket.module';
import { cacheConfig } from './config/cache.config';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true, cache: true }),
CacheModule.registerAsync(cacheConfig()),
MikroOrmModule.forRootAsync(dataBaseConfig),
UserModule,
UtilsModule,
AuthModule,
UploaderModule,
AdminModule,
ThrottlerModule.forRoot([
{
ttl: 60, // time window in seconds
limit: 5, // max requests per window
},
]),
ScheduleModule.forRoot(),
ProductModule,
RolesModule,
PaymentModule,
NotificationsModule,
EventEmitterModule.forRoot(),
PrintFormModule,
FormBuilderModule,
RequestModule,
InvoiceModule,
OrderModule,
LearningModule,
CriticismModule,
AnnouncementModule,
TicketModule,
],
controllers: [],
providers: [],
// exports: [CacheService],
})
export class AppModule { }