package com.kamco.cd.training.postgres.repository.dataset;

import com.kamco.cd.training.dataset.dto.DatasetClsObjDto;
import com.kamco.cd.training.dataset.dto.DatasetDto;
import com.kamco.cd.training.dataset.dto.DatasetDto.DatasetMngRegDto;
import com.kamco.cd.training.dataset.dto.DatasetDto.DatasetReq;
import com.kamco.cd.training.dataset.dto.DatasetDto.SelectDataSet;
import com.kamco.cd.training.dataset.dto.DatasetDto.SelectTransferDataSet;
import com.kamco.cd.training.dataset.dto.DatasetObjDto;
import com.kamco.cd.training.postgres.entity.DatasetClsObjEntity;
import com.kamco.cd.training.postgres.entity.DatasetEntity;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import org.springframework.data.domain.Page;

public interface DatasetClsRepositoryCustom {
  Page<DatasetEntity> findDatasetList(DatasetDto.SearchReq searchReq);

  Optional<DatasetEntity> findByUuid(UUID id);

  List<SelectDataSet> getDatasetSelectG1List(DatasetReq req);

  // TODO 미사용시작
  public List<SelectTransferDataSet> getDatasetTransferSelectG1List(Long modelId);

  public List<SelectTransferDataSet> getDatasetTransferSelectG2G3List(Long modelId, String modelNo);

  // TODO 미사용 끝

  List<SelectDataSet> getDatasetSelectG2G3List(DatasetReq req);

  List<SelectDataSet> getDatasetSelectG4List(DatasetReq req);

  Long getDatasetMaxStage(int compareYyyy, int targetYyyy);

  Long insertDatasetMngData(DatasetMngRegDto mngRegDto);

  List<String> findDatasetUid(List<Long> datasetIds);

  Long findDatasetByUidExistsCnt(String uid);

  Page<DatasetClsObjEntity> searchDatasetClsObjectList(DatasetClsObjDto.ClsSearchReq searchReq);

  void insertDatasetClsObj(DatasetObjDto.DatasetClsObjRegDto objRegDto);

  String getFilePathByUUIDPathType(UUID uuid);
}
