1 package fr.tiogars.chat.domains.nomenclature.repositories;
2
3 import java.util.List;
4 import fr.tiogars.chat.domains.nomenclature.entities.NomenclatureEntity;
5 import jakarta.persistence.LockModeType;
6 import org.springframework.data.jpa.repository.JpaRepository;
7 import org.springframework.data.jpa.repository.Lock;
8 import org.springframework.data.jpa.repository.Query;
9
10 public interface NomenclatureRepository extends JpaRepository<NomenclatureEntity, Long> {
11 List<NomenclatureEntity> findAllByOrderByCodeAsc();
12
13 boolean existsByCode(String code);
14
15 @Query("select count(n) > 0 from NomenclatureEntity n where n.parent.id = :parentId")
16 boolean existsByParentId(Long parentId);
17
18 @Lock(LockModeType.PESSIMISTIC_WRITE)
19 @Query("select n from NomenclatureEntity n order by n.id")
20 List<NomenclatureEntity> lockForest();
21
22 @Query(value = "select count(*) from tasks where nomenclature_id = :id", nativeQuery = true)
23 long countTaskReferences(Long id);
24 }