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

import java.util.Optional;

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

import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.RuleSetEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.RuleSetEntityKey;

public interface RuleSetRepository extends JpaRepository<RuleSetEntity, RuleSetEntityKey> {

    @Modifying
    @Query("update RuleSetEntity r set r.timeoutDetected = :timeoutDetected where r.dossierTemplateId = :dossierTemplateId and r.ruleFileType = :ruleFileType")
    void updateTimeoutDetected(@Param("dossierTemplateId") String dossierTemplateId, @Param("ruleFileType") String ruleFileType, @Param("timeoutDetected") boolean timeoutDetected);

    @Modifying
    @Query("update RuleSetEntity r set r.version = :version where r.dossierTemplateId = :dossierTemplateId and r.ruleFileType = :ruleFileType")
    void updateVersion(@Param("dossierTemplateId") String dossierTemplateId, @Param("ruleFileType") String ruleFileType, @Param("version") long version);


    Optional<RuleSetEntity> findByDossierTemplateIdAndRuleFileType(String dossierTemplateId, String ruleFileType);


    @Query("select r.version from RuleSetEntity r where r.dossierTemplateId = :dossierTemplateId and r.ruleFileType = :ruleFileType")
    Optional<Long> findVersionByDossierTemplateIdAndRuleFileType(@Param("dossierTemplateId") String dossierTemplateId, @Param("ruleFileType") String ruleFileType);


}
