package com.kamco.cd.kamcoback.postgres.repository.mapsheet;

import com.kamco.cd.kamcoback.mapsheet.dto.MapSheetMngDto;
import com.kamco.cd.kamcoback.postgres.entity.MapSheetMngHstEntity;
import jakarta.validation.Valid;
import java.util.List;
import java.util.Optional;
import org.springframework.data.domain.Page;

public interface MapSheetMngRepositoryCustom {

  List<MapSheetMngDto.MngDto> findMapSheetMngList();

  List<Integer> findMapSheetMngYyyyList();

  MapSheetMngDto.MngDto findMapSheetMng(int mngYyyy);

  void MapSheetMngComplete(int mngYyyy);

  Optional<MapSheetMngHstEntity> findMapSheetMngHstInfo(Long hstUid);

  int insertMapSheetOrgDataToMapSheetMngHst(int mngYyyy);

  List<MapSheetMngDto.MngFilesDto> findHstUidToMapSheetFileList(Long hstUid);

  void deleteByFileUidMngFile(Long fileUid);

  MapSheetMngDto.MngFilesDto findYyyyToMapSheetFilePath(int mngYyyy);

  void deleteByMngYyyyMngAll(int mngYyyy);

  void deleteByMngYyyyMng(int mngYyyy);

  void deleteByMngYyyyMngHst(int mngYyyy);

  void deleteByMngYyyyMngFile(int mngYyyy);

  Page<MapSheetMngDto.ErrorDataDto> findMapSheetErrorList(
      MapSheetMngDto.@Valid ErrorSearchReq searchReq);

  MapSheetMngDto.ErrorDataDto findMapSheetError(Long hstUid);

  List<MapSheetMngDto.MngFilesDto> findIdToMapSheetFileList(Long hstUid);

  void updateHstFileSizes(Long hstUid, long tifSizeBytes, long tfwSizeBytes, long totalSizeBytes);
}
