Skip to content

Commit

Permalink
feat(api): #24 #25 Remove deprecated, use record and change paginatio…
Browse files Browse the repository at this point in the history
…n ALL default values

close #24 #25
  • Loading branch information
Marthym committed Jun 13, 2024
1 parent aed241e commit 346cbab
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 81 deletions.
2 changes: 1 addition & 1 deletion juery-api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>fr.ght1pc9kc</groupId>
<artifactId>juery</artifactId>
<version>1.3.2-SNAPSHOT</version>
<version>1.4.0-SNAPSHOT</version>
</parent>

<artifactId>juery-api</artifactId>
Expand Down
41 changes: 4 additions & 37 deletions juery-api/src/main/java/fr/ght1pc9kc/juery/api/PageRequest.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package fr.ght1pc9kc.juery.api;

import fr.ght1pc9kc.juery.api.pagination.Sort;
import lombok.RequiredArgsConstructor;
import lombok.Value;
import lombok.With;

/**
Expand All @@ -16,13 +13,12 @@
* .build();
* }</pre>
*/
@Value
@RequiredArgsConstructor
public class PageRequest {
public record PageRequest(
Pagination pagination,
@With Criteria filter
) {
private static final PageRequest ALL = new PageRequest(Pagination.ALL, Criteria.none());

final Pagination pagination;
@With final Criteria filter;

/**
* Create a {@link PageRequest} with specified {@link Pagination} and {@link Criteria} filters.
Expand All @@ -38,20 +34,6 @@ public static PageRequest of(Pagination page, Criteria filter) {
return new PageRequest(page, filter);
}

/**
* Create a {@link PageRequest} with Pagination without any filter
*
* @param page The page number
* @param size The size of one page
* @return The request
* @deprecated Use instead {@link PageRequest#of(Pagination, Criteria)}
*/
@Deprecated(forRemoval = true, since = "1.1.0")
public static PageRequest of(int page, int size) {
Pagination pagination = (page < 0 || size < 0) ? Pagination.ALL : Pagination.of(page, size);
return of(pagination, Criteria.none());
}

/**
* Create a {@link PageRequest} with no pagination and no filter. A request for all elements.
*
Expand Down Expand Up @@ -82,19 +64,4 @@ public static PageRequest one(Criteria criteria) {
public PageRequest and(Criteria criteria) {
return new PageRequest(pagination, filter.and(criteria));
}

/**
* Create a {@link PageRequest} with pagination and filtering
*
* @param page The page number
* @param size The size of one page
* @param sort The sorting data
* @param filter The criteria filters
* @deprecated Use instead {@link PageRequest#of(Pagination, Criteria)}
*/
@Deprecated(forRemoval = true, since = "1.1.0")
PageRequest(int page, int size, Sort sort, Criteria filter) {
this.pagination = Pagination.of(page, size, sort);
this.filter = filter;
}
}
27 changes: 6 additions & 21 deletions juery-api/src/main/java/fr/ght1pc9kc/juery/api/Pagination.java
Original file line number Diff line number Diff line change
@@ -1,25 +1,23 @@
package fr.ght1pc9kc.juery.api;

import fr.ght1pc9kc.juery.api.pagination.Sort;
import lombok.Value;

/**
* The pagination query parameters.
*/
@Value
public final class Pagination {
public record Pagination(
int offset,
int size,
Sort sort
) {
/**
* The {@code FIRST} element of the pageable list
*/
public static final Pagination FIRST = new Pagination(0, 1, Sort.UNSORTED);
/**
* {@code ALL} the elements of the pageable list
*/
public static final Pagination ALL = new Pagination(-1, -1, Sort.UNSORTED);

final int offset;
final int size;
final Sort sort;
public static final Pagination ALL = new Pagination(0, Integer.MAX_VALUE, Sort.UNSORTED);

/**
* Create a {@link Pagination} object
Expand Down Expand Up @@ -55,17 +53,4 @@ public static Pagination of(int offset, int size, Sort sort) {
return new Pagination(offset, size, sort);
}
}

/**
* @deprecated Replaced by offset
*/
@Deprecated(since = "1.2.0", forRemoval = true)
public int page() {
if (size < 0) {
return -1;
} else if (offset <= size) {
return 1;
}
return (int) Math.floor((double) offset / (double) size);
}
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,15 @@
package fr.ght1pc9kc.juery.api.pagination;

import lombok.Value;
import org.jetbrains.annotations.NotNull;

@Value
public class Order {
Direction direction;
String property;

public Order(@NotNull Direction direction, @NotNull String property) {
public record Order(
Direction direction,
String property
) {
public Order {
if (property.isBlank()) {
throw new IllegalArgumentException("The property must not be blank !");
}
this.direction = direction;
this.property = property;
}

public static Order asc(@NotNull String prop) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
package fr.ght1pc9kc.juery.api.pagination;

import lombok.Value;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

@Value
public class Sort {
public record Sort(
List<Order> orders
) {
public static final Sort UNSORTED = new Sort(List.of());

List<Order> orders;

public static Sort of() {
return UNSORTED;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,16 @@
class PageRequestTest {
@Test
void should_create_page_request() {
PageRequest actual = PageRequest.of(1, 5);
PageRequest actual = PageRequest.of(Pagination.of(1, 5), Criteria.none());

Assertions.assertThat(actual.pagination().page()).isEqualTo(1);
Assertions.assertThat(actual.pagination().size()).isEqualTo(5);
Assertions.assertThat(actual.filter()).isEqualTo(Criteria.none());
Assertions.assertThat(actual.pagination().sort()).isEqualTo(Sort.of());
}

@Test
void should_create_page_request_zero() {
PageRequest actual = PageRequest.of(-1, 10);
PageRequest actual = PageRequest.of(Pagination.ALL, Criteria.none());

Assertions.assertThat(actual).isEqualTo(PageRequest.all());
}
Expand All @@ -40,8 +39,7 @@ void shoudl_add_criteria_to_pagerequest() {
PageRequest actual = PageRequest.all(Criteria.property("name").eq("Obiwan"))
.and(Criteria.property("faction").eq("jedi"));

Assertions.assertThat(actual.pagination().page()).isEqualTo(-1);
Assertions.assertThat(actual.pagination().size()).isEqualTo(-1);
Assertions.assertThat(actual.pagination().size()).isEqualTo(Pagination.ALL.size());
Assertions.assertThat(actual.filter()).isEqualTo(Criteria.and(
Criteria.property("name").eq("Obiwan"),
Criteria.property("faction").eq("jedi")
Expand All @@ -56,7 +54,6 @@ void should_build_full_page_request() {
Criteria.property("faction").eq("jedi")
);

Assertions.assertThat(actual.pagination().page()).isEqualTo(1);
Assertions.assertThat(actual.pagination().size()).isEqualTo(10);
Assertions.assertThat(actual.filter()).isEqualTo(Criteria.property("faction").eq("jedi"));
Assertions.assertThat(actual.pagination().sort()).isEqualTo(Sort.of(Direction.ASC, "name"));
Expand Down

0 comments on commit 346cbab

Please sign in to comment.