import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { PrismaModule } from '../prisma/prisma.module';
import { AppConfigModule } from '../config/app/app-config.module';
import { UserController } from '../modules/user/user.controller';
import { HookController } from '../modules/hook/hook.controller';
import { APP_GUARD } from '@nestjs/core';
import { JwtAuthGuard } from '../auth/guard/jwt-auth.guard';
import { AuthModule } from '../auth/auth.module';
import { RedisModule } from '../cache/cache.module';
import { HeaderApiKeyStrategy } from '../auth/strategies/api-key.strategy';
// import { BookingModule } from '../modules/booking/booking.module';
import { SlotModule } from '../modules/slot/slot.module';
import { BookingSlotModule } from '../modules/booking-slot/booking-slot.module';
import { AppConfigService } from '../config/app/app-config.service';
import { MailModule } from 'src/share/mail/mail.module';
import { FilesModule } from 'src/modules/files/files.module';
import { CommentModule } from 'src/modules/comment/comment.module';
import { ZNSModule } from 'src/modules/zns/zns.module';

@Module({
  imports: [
    AppConfigModule,
    PrismaModule,
    CommentModule,
    AuthModule,
    RedisModule,
    // BookingModule,
    BookingSlotModule,
    SlotModule,
    MailModule,
    FilesModule,
    ZNSModule,
  ],
  controllers: [AppController, UserController, HookController],
  providers: [
    AppService,
    AppConfigService,
    {
      provide: APP_GUARD,
      useClass: JwtAuthGuard,
    },
    HeaderApiKeyStrategy,
  ],
})
export class AppModule {}
