package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository;

import java.util.List;
import java.util.Optional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
import com.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingType;

public interface DossierTemplateRepository extends JpaRepository<DossierTemplateEntity, String> {

    @Query("select d from DossierTemplateEntity d where d.softDeleteTime is null")
    List<DossierTemplateEntity> findAllWhereDeletedIsFalse();


    @Query("select d from DossierTemplateEntity d where d.id = :dossierTemplateId and d.softDeleteTime is null")
    Optional<DossierTemplateEntity> findByIdAndNotDeleted(@Param("dossierTemplateId") String dossierTemplateId);


    @Query("select case when exists (select 1 from DossierTemplateEntity d where d.id = :dossierTemplateId and d.softDeleteTime is null) then true else false end")
    boolean existsByIdAndNotDeleted(@Param("dossierTemplateId") String dossierTemplateId);


    boolean existsByName(String name);


    boolean existsByNameAndIdNot(String name, String id);


    @Query("select d.layoutParsingType from DossierTemplateEntity d where d.id = :dossierTemplateId and d.softDeleteTime is null")
    Optional<LayoutParsingType> findLayoutParsingTypeByIdAndNotDeleted(@Param("dossierTemplateId") String dossierTemplateId);

}
