import { Module } from "@nestjs/common"
import { TypeOrmModule } from "@nestjs/typeorm"
import { AuthGuardMiddleware } from "../middleware/auth-guard.middleware"
import { Auth } from "../modules/auth/entities/auth.entity"
import { BlacklistedToken } from "../modules/auth/entities/user-blacklisted-token.entity"
import { Employee } from "../modules/employees/entities/employee.entity"
import { CompanySubscription } from "../modules/company/entities/company-subscription.entity"
import { AuthRepository } from "../modules/auth/repositories/auth.repository"
import { UserBlacklistedTokenRepository } from "../modules/auth/repositories/user-blacklisted-token.repository"
import { EmployeeRepository } from "../modules/employees/repositories/employee.repository"
import { CompanySubscriptionRepository } from "../modules/company/repositories/company-subscription.repository"
import { RoleModule } from "../modules/role/role.module"

@Module({
  imports: [
    TypeOrmModule.forFeature([
      Auth,
      BlacklistedToken,
      Employee,
      CompanySubscription,
    ]),
    RoleModule,
  ],
  providers: [
    AuthGuardMiddleware,
    AuthRepository,
    UserBlacklistedTokenRepository,
    EmployeeRepository,
    CompanySubscriptionRepository,
  ],
  exports: [AuthGuardMiddleware],
})
export class GuardsModule {}
