Skip to content

Commit

Permalink
Refactor Get Service Requests
Browse files Browse the repository at this point in the history
Signed-off-by: montesm <montesm@objectcomputing.com>
  • Loading branch information
montesmoci committed Apr 29, 2024
1 parent 9f05f87 commit e11f21a
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 296 deletions.
9 changes: 9 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ dependencies {
annotationProcessor("io.micronaut:micronaut-http-validation")
annotationProcessor("io.micronaut.security:micronaut-security-annotations")
annotationProcessor("io.micronaut.openapi:micronaut-openapi")
implementation("org.hibernate:hibernate-jpamodelgen-jakarta")
implementation("io.micronaut:micronaut-http-client")
implementation("io.micronaut:micronaut-jackson-databind")
implementation("jakarta.annotation:jakarta.annotation-api")
Expand Down Expand Up @@ -61,6 +62,14 @@ dependencies {
}
}

sourceSets {
generated {
java {
srcDirs = ["$build/generated/java"]
}
}
}

application {
mainClass.set("app.Application")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,63 +33,42 @@ public interface ServiceRequestRepository extends PageableRepository<ServiceRequ
Page<ServiceRequest> findByIdInAndJurisdictionId(List<Long> serviceRequestIds, String jurisdictionId, Pageable pageable);
List<ServiceRequest> findByIdInAndJurisdictionId(List<Long> serviceRequestIds, String jurisdictionId, Sort sort);
Optional<ServiceRequest> findByIdAndJurisdictionId(Long serviceRequestId, String jurisdictionId);
Page<ServiceRequest> findAllByJurisdictionId(String jurisdictionId, Pageable pageable);
List<ServiceRequest> findAllByJurisdictionId(String jurisdictionId, Sort sort);

Page<ServiceRequest> findByJurisdictionIdAndServiceIdIn(String jurisdictionId, List<Long> serviceIds, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndServiceIdIn(String jurisdictionId, List<Long> serviceIds, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndServiceIdInAndDateCreatedBetween(String jurisdictionId, List<Long> serviceIds, Instant start, Instant end, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndServiceIdInAndDateCreatedBetween(String jurisdictionId, List<Long> serviceIds, Instant start, Instant end, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndServiceIdInAndDateCreatedAfter(String jurisdictionId, List<Long> serviceIds, Instant start, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndServiceIdInAndDateCreatedAfter(String jurisdictionId, List<Long> serviceIds, Instant start, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndServiceIdInAndDateCreatedBefore(String jurisdictionId, List<Long> serviceIds, Instant end, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndServiceIdInAndDateCreatedBefore(String jurisdictionId, List<Long> serviceIds, Instant end, Sort sort);

Page<ServiceRequest> findByJurisdictionIdAndStatusIn(String jurisdictionId, List<ServiceRequestStatus> status, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndStatusIn(String jurisdictionId, List<ServiceRequestStatus> status, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndStatusInAndDateCreatedBetween(String jurisdictionId, List<ServiceRequestStatus> status, Instant start, Instant end, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndStatusInAndDateCreatedBetween(String jurisdictionId, List<ServiceRequestStatus> status, Instant start, Instant end, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndStatusInAndDateCreatedAfter(String jurisdictionId, List<ServiceRequestStatus> status, Instant start, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndStatusInAndDateCreatedAfter(String jurisdictionId, List<ServiceRequestStatus> status, Instant start, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndStatusInAndDateCreatedBefore(String jurisdictionId, List<ServiceRequestStatus> status, Instant end, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndStatusInAndDateCreatedBefore(String jurisdictionId, List<ServiceRequestStatus> status, Instant end, Sort sort);

Page<ServiceRequest> findByJurisdictionIdAndServiceIdInAndStatusIn(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestStatus> status, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndServiceIdInAndStatusIn(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestStatus> status, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndServiceIdInAndStatusInAndDateCreatedBetween(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestStatus> status, Instant start, Instant end, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndServiceIdInAndStatusInAndDateCreatedBetween(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestStatus> status, Instant start, Instant end, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndServiceIdInAndStatusInAndDateCreatedAfter(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestStatus> status, Instant start, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndServiceIdInAndStatusInAndDateCreatedAfter(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestStatus> status, Instant start, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndServiceIdInAndStatusInAndDateCreatedBefore(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestStatus> status, Instant end, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndServiceIdInAndStatusInAndDateCreatedBefore(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestStatus> status, Instant end, Sort sort);

Page<ServiceRequest> findByJurisdictionIdAndDateCreatedBetween(String jurisdictionId, Instant start, Instant end, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndDateCreatedBetween(String jurisdictionId, Instant startDate, Instant endDate, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndDateCreatedAfter(String jurisdictionId, Instant start, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndDateCreatedAfter(String jurisdictionId, Instant start, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndDateCreatedBefore(String jurisdictionId, Instant end, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndDateCreatedBefore(String jurisdictionId, Instant end, Sort sort);

@Transactional
default Page<ServiceRequest> findAllBy(String jurisdictionId, List<Long> serviceCodes,
List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority,
Instant startDate, Instant endDate, Pageable pageable) {

Specification<ServiceRequest> specification = getServiceRequestSpecification(jurisdictionId, serviceCodes, status, priority, startDate, endDate);

return findAll(specification, pageable);
}

@Transactional
default List<ServiceRequest> findAllBy(String jurisdictionId, List<Long> serviceCodes,
List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority,
Instant startDate, Instant endDate, Sort sort) {

Specification<ServiceRequest> specification = getServiceRequestSpecification(jurisdictionId, serviceCodes, status, priority, startDate, endDate);

return findAll(specification, sort);
}

private static Specification<ServiceRequest> getServiceRequestSpecification(String jurisdictionId, List<Long> serviceCodes, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Instant startDate, Instant endDate) {
Specification<ServiceRequest> specification;
specification = (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get("jurisdiction_id"), jurisdictionId);

if (serviceCodes != null && !serviceCodes.isEmpty()) {
specification.and(Specifications.serviceCodeIn(serviceCodes));
}

// if (status != null && !status.isEmpty()) {
// specification.and(Specifications.statusIn(status));
// }
//
// if (priority != null && !priority.isEmpty()) {
// specification.and(Specifications.priorityIn(priority));
// }
if (status != null && !status.isEmpty()) {
specification.and(Specifications.statusIn(status));
}

if (priority != null && !priority.isEmpty()) {
specification.and(Specifications.priorityIn(priority));
}

if (startDate != null && endDate != null) {
specification.and(Specifications.createdDateBetween(startDate, endDate));
Expand All @@ -98,8 +77,7 @@ default List<ServiceRequest> findAllBy(String jurisdictionId, List<Long> service
} else if (startDate == null && endDate != null) {
specification.and(Specifications.createdDateBefore(endDate));
}

return findAll(specification, sort);
return specification;
}

class Specifications {
Expand All @@ -110,22 +88,22 @@ public static Specification<ServiceRequest> serviceCodeIn(List<Long> serviceCode
-> root.get("service_id").in(serviceCodes);
}

// // status
// public static Specification<ServiceRequest> statusIn(List<ServiceRequestStatus> serviceRequestStatuses) {
// return (root, query, criteriaBuilder)
// -> root.get("service_id").in(serviceCodes);
// }
//
// // priority
// public static Specification<ServiceRequest> priorityIn(List<ServiceRequestPriority> serviceRequestPriorities) {
// return (root, query, criteriaBuilder)
// -> root.get("service_id").in(serviceCodes);
// }
// status
public static Specification<ServiceRequest> statusIn(List<ServiceRequestStatus> serviceRequestStatuses) {
return (root, query, criteriaBuilder)
-> root.get("service_id").in(serviceRequestStatuses);
}

// priority
public static Specification<ServiceRequest> priorityIn(List<ServiceRequestPriority> serviceRequestPriorities) {
return (root, query, criteriaBuilder)
-> root.get("service_id").in(serviceRequestPriorities);
}

// dateCreated
public static Specification<ServiceRequest> createdDateBetween(Instant startDate, Instant endDate) {
return (root, query, criteriaBuilder)
-> criteriaBuilder.between(root.get("date_created"), startDate, endDate);
-> criteriaBuilder.between(root.get(ServiceRequest_.dateCreated), startDate, endDate);
}

public static Specification<ServiceRequest> createdDateAfter(Instant instant) {
Expand All @@ -138,37 +116,4 @@ public static Specification<ServiceRequest> createdDateBefore(Instant instant) {
-> criteriaBuilder.lessThanOrEqualTo(root.get("date_created"), instant);
}
}

Page<ServiceRequest> findByJurisdictionIdAndServiceIdInAndStatusInAndPriorityIn(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndServiceIdInAndStatusInAndPriorityIn(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndServiceIdInAndStatusInAndPriorityInAndDateCreatedBetween(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Instant start, Instant end, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndServiceIdInAndStatusInAndPriorityInAndDateCreatedBetween(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Instant start, Instant end, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndServiceIdInAndStatusInAndPriorityInAndDateCreatedAfter(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Instant start, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndServiceIdInAndStatusInAndPriorityInAndDateCreatedAfter(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Instant start, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndServiceIdInAndStatusInAndPriorityInAndDateCreatedBefore(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Instant end, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndServiceIdInAndStatusInAndPriorityInAndDateCreatedBefore(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Instant end, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndServiceIdInAndPriorityInAndDateCreatedBetween(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestPriority> priority, Instant startDate, Instant endDate, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndServiceIdInAndPriorityInAndDateCreatedBetween(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestPriority> priority, Instant startDate, Instant endDate, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndServiceIdInAndPriorityInAndDateCreatedAfter(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestPriority> priority, Instant startDate, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndServiceIdInAndPriorityInAndDateCreatedAfter(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestPriority> priority, Instant startDate, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndServiceIdInAndPriorityInAndDateCreatedBefore(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestPriority> priority, Instant endDate, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndServiceIdInAndPriorityInAndDateCreatedBefore(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestPriority> priority, Instant endDate, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndServiceIdInAndPriorityIn(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestPriority> priority, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndServiceIdInAndPriorityIn(String jurisdictionId, List<Long> serviceIds, List<ServiceRequestPriority> priority, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndStatusInAndPriorityInAndDateCreatedBetween(String jurisdictionId, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Instant startDate, Instant endDate, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndStatusInAndPriorityInAndDateCreatedBetween(String jurisdictionId, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Instant startDate, Instant endDate, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndStatusInAndPriorityInAndDateCreatedAfter(String jurisdictionId, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Instant startDate, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndStatusInAndPriorityInAndDateCreatedAfter(String jurisdictionId, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Instant startDate, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndStatusInAndPriorityInAndDateCreatedBefore(String jurisdictionId, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Instant endDate, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndStatusInAndPriorityInAndDateCreatedBefore(String jurisdictionId, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Instant endDate, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndStatusInAndPriorityIn(String jurisdictionId, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndStatusInAndPriorityIn(String jurisdictionId, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndPriorityInAndDateCreatedBetween(String jurisdictionId, List<ServiceRequestPriority> priority, Instant startDate, Instant endDate, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndPriorityInAndDateCreatedBetween(String jurisdictionId, List<ServiceRequestPriority> priority, Instant startDate, Instant endDate, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndPriorityInAndDateCreatedAfter(String jurisdictionId, List<ServiceRequestPriority> priority, Instant startDate, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndPriorityInAndDateCreatedAfter(String jurisdictionId, List<ServiceRequestPriority> priority, Instant startDate, Sort sort);
Page<ServiceRequest> findByJurisdictionIdAndPriorityInAndDateCreatedBefore(String jurisdictionId, List<ServiceRequestPriority> priority, Instant endDate, Pageable pageable);
List<ServiceRequest> findByJurisdictionIdAndPriorityInAndDateCreatedBefore(String jurisdictionId, List<ServiceRequestPriority> priority, Instant endDate, Sort sort);
Page<ServiceRequest> findAllByJurisdictionIdAndPriorityIn(String jurisdictionId, List<ServiceRequestPriority> priority, Pageable pageable);
List<ServiceRequest> findAllByJurisdictionIdAndPriorityIn(String jurisdictionId, List<ServiceRequestPriority> priority, Sort sort);
}
Loading

0 comments on commit e11f21a

Please sign in to comment.