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.Modifying;
import org.springframework.data.jpa.repository.Query;

import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity;

public interface FileAttributeConfigRepository extends JpaRepository<FileAttributeConfigEntity, String> {

    List<FileAttributeConfigEntity> findByDossierTemplateId(String dossierTemplateId);


    @Modifying
    @Query("update FileAttributeConfigEntity e set e.primaryAttribute = false where e.dossierTemplate.id = :dossierTemplateId")
    void updateAllPrimaryAttributeValuesToFalse(String dossierTemplateId);


    @Modifying
    @Query("update FileAttributeConfigEntity e set e.primaryAttribute = true where e.id = :fileAttributeId")
    void updatePrimaryAttributeValueToTrue(String fileAttributeId);


    @Query("select fa from FileAttributeConfigEntity fa where fa.dossierTemplate.id = :dossierTemplateId and (fa.id = :fileAttributeId or fa.label = :label)")
    Optional<FileAttributeConfigEntity> findByIdOrDossierTemplateIdAndLabel(String dossierTemplateId, String fileAttributeId, String label);

}
