import { Global, Module } from '@nestjs/common'; import { DatabaseModule } from '@gitroom/nestjs-libraries/database/prisma/database.module'; import { ApiModule } from '@gitroom/backend/api/api.module'; import { APP_GUARD } from '@nestjs/core'; import { PoliciesGuard } from '@gitroom/backend/services/auth/permissions/permissions.guard'; import { BullMqModule } from '@gitroom/nestjs-libraries/bull-mq-transport-new/bull.mq.module'; import { PluginModule } from '@gitroom/plugins/plugin.module'; import { PublicApiModule } from '@gitroom/backend/public-api/public.api.module'; import { ThrottlerBehindProxyGuard } from '@gitroom/nestjs-libraries/throttler/throttler.provider'; import { ThrottlerModule } from '@nestjs/throttler'; import { AgentModule } from '@gitroom/nestjs-libraries/agent/agent.module'; @Global() @Module({ imports: [ BullMqModule, DatabaseModule, ApiModule, PluginModule, PublicApiModule, AgentModule, ThrottlerModule.forRoot([ { ttl: 3600000, limit: 30, }, ]), ], controllers: [], providers: [ { provide: APP_GUARD, useClass: ThrottlerBehindProxyGuard, }, { provide: APP_GUARD, useClass: PoliciesGuard, }, ], get exports() { return [...this.imports]; }, }) export class AppModule {}