From 3091037bbece2e689b2b0a7ca2b5818fff14faf3 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Thu, 11 Apr 2024 21:13:08 +0100 Subject: [PATCH] feat: create cursor pagination return type Signed-off-by: Otavio Santana --- .../MethodQueryRepositoryReturnType.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/jnosql-lite/mapping-lite-processor/src/main/java/org/eclipse/jnosql/lite/mapping/repository/MethodQueryRepositoryReturnType.java b/jnosql-lite/mapping-lite-processor/src/main/java/org/eclipse/jnosql/lite/mapping/repository/MethodQueryRepositoryReturnType.java index 3e7eafa0..8ac342c5 100644 --- a/jnosql-lite/mapping-lite-processor/src/main/java/org/eclipse/jnosql/lite/mapping/repository/MethodQueryRepositoryReturnType.java +++ b/jnosql-lite/mapping-lite-processor/src/main/java/org/eclipse/jnosql/lite/mapping/repository/MethodQueryRepositoryReturnType.java @@ -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; @@ -94,6 +95,18 @@ public List apply(MethodMetadata metadata) { "org.eclipse.jnosql.mapping.core.NoSQLPage.of(entitiesJNoSQL.toList(), " + pageRequest.name() + ")"); return lines; } + }, CURSOR_PAGINATION{ + @Override + public List apply(MethodMetadata metadata) { + List 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) { @@ -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); };