Skip to content

Commit

Permalink
feat: create cursor pagination return type
Browse files Browse the repository at this point in the history
Signed-off-by: Otavio Santana <otaviopolianasantana@gmail.com>
  • Loading branch information
otaviojava committed Apr 11, 2024
1 parent 92b9d80 commit 3091037
Showing 1 changed file with 14 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
*/
package org.eclipse.jnosql.lite.mapping.repository;

import jakarta.data.page.CursoredPage;
import jakarta.data.page.Page;
import org.eclipse.jnosql.lite.mapping.ValidationException;

Expand Down Expand Up @@ -94,6 +95,18 @@ public List<String> apply(MethodMetadata metadata) {
"org.eclipse.jnosql.mapping.core.NoSQLPage.of(entitiesJNoSQL.toList(), " + pageRequest.name() + ")");
return lines;
}
}, CURSOR_PAGINATION{
@Override
public List<String> apply(MethodMetadata metadata) {
List<String> lines = new ArrayList<>();
Parameter pageRequest = metadata.findPageRequest()
.orElseThrow(() -> new ValidationException("The method " + metadata.getMethodName() + " from " +
metadata.getParametersSignature() + " does not have a Pageable parameter in a pagination cursor method"));

lines.add(CursoredPage.class.getName() + "<" + getEntity(metadata) + "> entitiesJNoSQL = this.template.select(queryJNoSQL, "
+ pageRequest.name() + ")");
return lines;
}
};

static String getEntity(MethodMetadata metadata) {
Expand All @@ -113,6 +126,7 @@ static MethodQueryRepositoryReturnType of(MethodMetadata metadata) {
case "java.util.SortedSet", "java.util.TreeSet" -> SORTED_SET;
case "java.util.Optional" -> OPTIONAL;
case "jakarta.data.page.Page", "jakarta.data.page.Slice" -> PAGINATION;
case "jakarta.data.page.CursoredPage" -> CURSOR_PAGINATION;
default -> throw new UnsupportedOperationException("This return is not supported: " + returnType);
};

Expand Down

0 comments on commit 3091037

Please sign in to comment.