Added cursor pagination (#1056)

This commit is contained in:
ReyhanPatria 2021-11-04 10:11:03 +07:00 committed by GitHub
parent bc45c33f4d
commit c98612571c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -20,6 +20,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.google.inject.Inject; import com.google.inject.Inject;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
@ -33,7 +34,10 @@ import org.openmetadata.catalog.util.EntityUtil.Fields;
import org.openmetadata.catalog.util.RestUtil; import org.openmetadata.catalog.util.RestUtil;
import org.openmetadata.catalog.util.ResultList; import org.openmetadata.catalog.util.ResultList;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.ws.rs.Consumes; import javax.ws.rs.Consumes;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET; import javax.ws.rs.GET;
import javax.ws.rs.POST; import javax.ws.rs.POST;
import javax.ws.rs.Path; import javax.ws.rs.Path;
@ -90,10 +94,28 @@ public class BotsResource {
BotsList.class))) BotsList.class)))
}) })
public ResultList<Bots> list(@Context UriInfo uriInfo, public ResultList<Bots> list(@Context UriInfo uriInfo,
@Context SecurityContext securityContext, @Context SecurityContext securityContext,
@QueryParam("name") String name) throws IOException, GeneralSecurityException, ParseException { @QueryParam("name") String name,
ResultList<Bots> list = dao.listAfter(null, name, 10000, null); @DefaultValue("10")
@Min(1)
@Max(1000000)
@QueryParam("limit") int limitParam,
@Parameter(description = "Returns list of tables before this cursor",
schema = @Schema(type = "string"))
@QueryParam("before") String before,
@Parameter(description = "Returns list of tables after this cursor",
schema = @Schema(type = "string"))
@QueryParam("after") String after) throws IOException, GeneralSecurityException, ParseException {
RestUtil.validateCursors(before, after);
ResultList<Bots> list;
if (before != null) { // Reverse paging
list = dao.listBefore(null, name, limitParam, before);
} else { // Forward paging or first page
list = dao.listAfter(null, name, limitParam, after);
}
list.getData().forEach(b -> addHref(uriInfo, b)); list.getData().forEach(b -> addHref(uriInfo, b));
return list; return list;
} }