import { Injectable, NotImplementedException } from '@nestjs/common';
import { AssemblyMonitoringRepository } from './assembly-monitoring.repository';
import {
  AssemblyMonitoringDailyQueryDto,
  AssemblyMonitoringProcessesQueryDto,
  AssemblyMonitoringQueryWithFactUnit,
  AssemblyMonitoringRealtimeQueryDto,
  AssemblyMonitoringUnitDetailQueryWithDefaults,
  AssemblyMonitoringUnitListQueryWithDefaults,
} from './dto/request';
import { AssemblyMonitoringProcColumnRowDbDto } from './dto/internal/proc-column-row.db.dto';
import { AssemblyMonitoringRealtimeDbResultDto } from './dto/internal/realtime-result.db.dto';
import { AssemblyMonitoringUnitProcessStatusDbDto } from './dto/internal/unit-process-status.db.dto';
import { AssemblyMonitoringUnitDetailDbDto } from './dto/internal/unit-detail.db.dto';
import { AssemblyMonitoringUnitListResponseDto } from './dto/response/unit-list.response.dto';

@Injectable()
export class AssemblyMonitoringQueryRepository extends AssemblyMonitoringRepository {
  findRealtimeData(
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
    _req: AssemblyMonitoringQueryWithFactUnit<AssemblyMonitoringRealtimeQueryDto>,
  ): Promise<AssemblyMonitoringRealtimeDbResultDto> {
    throw new NotImplementedException('Direct query not implemented');
  }

  findDailyData(
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
    _req: AssemblyMonitoringQueryWithFactUnit<AssemblyMonitoringDailyQueryDto>,
  ): Promise<AssemblyMonitoringProcColumnRowDbDto[]> {
    throw new NotImplementedException('Direct query not implemented');
  }

  findProcesses(
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
    _req: AssemblyMonitoringQueryWithFactUnit<AssemblyMonitoringProcessesQueryDto>,
  ): Promise<AssemblyMonitoringUnitProcessStatusDbDto[]> {
    throw new NotImplementedException('Direct query not implemented');
  }

  findWaitingProcesses(
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
    _req: AssemblyMonitoringQueryWithFactUnit<AssemblyMonitoringProcessesQueryDto>,
  ): Promise<AssemblyMonitoringUnitProcessStatusDbDto[]> {
    throw new NotImplementedException('Direct query not implemented');
  }

  findUnitList(
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
    _req: AssemblyMonitoringUnitListQueryWithDefaults,
  ): Promise<AssemblyMonitoringUnitListResponseDto[]> {
    throw new NotImplementedException('Direct query not implemented');
  }

  findUnitDetail(
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
    _req: AssemblyMonitoringUnitDetailQueryWithDefaults,
  ): Promise<AssemblyMonitoringUnitDetailDbDto[]> {
    throw new NotImplementedException('Direct query not implemented');
  }
}
