import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { AuthModule } from '../auth/auth.module';
import { ServiceCredentialModule } from '../common/service-credential/service-credential.module';
import { AuditEventsController } from './audit-events.controller';
import { AuditEventsService } from './audit-events.service';
import { AuditEventsFeatureGuard } from './guards/audit-events-feature.guard';
import { AuditEventsRateLimitGuard } from './guards/audit-events-rate-limit.guard';
import { AuditEvent, AuditEventSchema } from './schemas/audit-event.schema';
import {
  AuditEventRollup,
  AuditEventRollupSchema,
} from './schemas/audit-event-rollup.schema';
import { AhaProgress, AhaProgressSchema } from './schemas/aha-progress.schema';
import {
  AhaRuleVersion,
  AhaRuleVersionSchema,
} from './schemas/aha-rule-version.schema';

@Module({
  imports: [
    AuthModule,
    ServiceCredentialModule,
    MongooseModule.forFeature([
      {
        name: AuditEvent.name,
        schema: AuditEventSchema,
      },
      {
        name: AuditEventRollup.name,
        schema: AuditEventRollupSchema,
      },
      {
        name: AhaProgress.name,
        schema: AhaProgressSchema,
      },
      {
        name: AhaRuleVersion.name,
        schema: AhaRuleVersionSchema,
      },
    ]),
  ],
  controllers: [AuditEventsController],
  providers: [
    AuditEventsService,
    AuditEventsFeatureGuard,
    AuditEventsRateLimitGuard,
  ],
  exports: [AuditEventsService],
})
export class AuditEventsModule {}
