import { Injectable } from "@nestjs/common"
import { InjectRepository } from "@nestjs/typeorm"
import { Repository } from "typeorm"
import { BaseAbstractRepository } from "../../../common/repository/base.repository"
import { Modules } from "../entities/module.entity"

@Injectable()
export class ModuleRepository extends BaseAbstractRepository<Modules> {
  constructor(
    @InjectRepository(Modules)
    private readonly moduleRepository: Repository<Modules>,
  ) {
    super(moduleRepository)
  }
  async getModulesByBusinessVerticalIds(
    business_vertical_ids: number[],
  ): Promise<Modules[]> {
    return this.moduleRepository
      .createQueryBuilder("module")
      .leftJoin("module.business_verticals", "bv")
      .where("bv.id IN (:...business_vertical_ids)", { business_vertical_ids })
      .select(["module.id", "module.module_name", "module.module_type"])
      .getMany()
  }
}
