CustomBlockRepositoryImpl.java

1
package org.cardanofoundation.explorer.api.repository.ledgersync.impl;
2
3
import java.util.List;
4
5
import jakarta.persistence.EntityManager;
6
import jakarta.persistence.PersistenceContext;
7
import jakarta.persistence.criteria.CriteriaBuilder;
8
import jakarta.persistence.criteria.CriteriaQuery;
9
import jakarta.persistence.criteria.Order;
10
import jakarta.persistence.criteria.Predicate;
11
import jakarta.persistence.criteria.Root;
12
13
import lombok.AccessLevel;
14
import lombok.RequiredArgsConstructor;
15
import lombok.experimental.FieldDefaults;
16
17
import org.springframework.data.domain.Sort.Direction;
18
import org.springframework.stereotype.Repository;
19
import org.springframework.transaction.annotation.Propagation;
20
import org.springframework.transaction.annotation.Transactional;
21
22
import org.cardanofoundation.explorer.api.repository.ledgersync.CustomBlockRepository;
23
import org.cardanofoundation.explorer.common.entity.ledgersync.BaseEntity_;
24
import org.cardanofoundation.explorer.common.entity.ledgersync.Block;
25
26
@Repository
27
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
28
@RequiredArgsConstructor
29
public class CustomBlockRepositoryImpl implements CustomBlockRepository {
30
31
  @PersistenceContext EntityManager entityManager;
32
33
  @Override
34
  @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
35
  public List<Block> findByBlockIdAndLimit(Long blockId, int limit, Direction direction) {
36
    CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
37
    CriteriaQuery<Block> blockQuery = criteriaBuilder.createQuery(Block.class);
38
    Root<Block> blockRoot = blockQuery.from(Block.class);
39
    Predicate selectionCondition;
40
    Order orderByBlockId;
41
42 1 1. findByBlockIdAndLimit : negated conditional → NO_COVERAGE
    if (direction.equals(Direction.ASC)) {
43
      selectionCondition =
44
          criteriaBuilder.greaterThanOrEqualTo(blockRoot.get(BaseEntity_.id), blockId);
45
      orderByBlockId = criteriaBuilder.asc(blockRoot.get(BaseEntity_.id));
46
    } else {
47
      selectionCondition =
48
          criteriaBuilder.lessThanOrEqualTo(blockRoot.get(BaseEntity_.id), blockId);
49
      orderByBlockId = criteriaBuilder.desc(blockRoot.get(BaseEntity_.id));
50
    }
51
52
    blockQuery.select(blockRoot).where(selectionCondition).orderBy(orderByBlockId);
53 1 1. findByBlockIdAndLimit : replaced return value with Collections.emptyList for org/cardanofoundation/explorer/api/repository/ledgersync/impl/CustomBlockRepositoryImpl::findByBlockIdAndLimit → NO_COVERAGE
    return entityManager.createQuery(blockQuery).setMaxResults(limit).getResultList();
54
  }
55
}

Mutations

42

1.1
Location : findByBlockIdAndLimit
Killed by : none
negated conditional → NO_COVERAGE

53

1.1
Location : findByBlockIdAndLimit
Killed by : none
replaced return value with Collections.emptyList for org/cardanofoundation/explorer/api/repository/ledgersync/impl/CustomBlockRepositoryImpl::findByBlockIdAndLimit → NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT 1.14.2