Pagination

This commit is contained in:
luk-kaminski
2026-02-19 12:44:59 +01:00
parent a4da3ba0d4
commit ce5427f0ad
3 changed files with 8 additions and 2 deletions

View File

@@ -10,5 +10,7 @@ public interface EntityFieldGroupingService {
String fieldName,
String query,
String groupFilter,
int page,
int pageSize,
Subject subject);
}

View File

@@ -33,6 +33,8 @@ public class MongoEntityFieldGroupingService implements EntityFieldGroupingServi
final String fieldName,
final String query,
final String groupFilter,
final int page,
final int pageSize,
final Subject subject) {
final MongoCollection<Document> mongoCollection = mongoConnection.getMongoDatabase().getCollection(collectionName);
final var userCanReadAllEntities = permissionsUtils.hasAllPermission(subject) ||
@@ -41,7 +43,9 @@ public class MongoEntityFieldGroupingService implements EntityFieldGroupingServi
if (userCanReadAllEntities) {
final AggregateIterable<Document> results = mongoCollection.aggregate(List.of(
Aggregates.group("$" + fieldName, Accumulators.sum(COUNT_FIELD_NAME, 1)),
Aggregates.sort(Sorts.descending(COUNT_FIELD_NAME))
Aggregates.sort(Sorts.descending(COUNT_FIELD_NAME, "_id")),
Aggregates.skip((page - 1) * pageSize),
Aggregates.limit(pageSize)
));
List<EntityFieldGroup> result = new ArrayList<>();

View File

@@ -46,7 +46,7 @@ public class SliceByResource extends RestResource {
@QueryParam("query") @DefaultValue("") String query) {
return new SliceByResponse(
entitySuggestionService.groupByField(collection, column, query, "TBD", getSubject()),
entitySuggestionService.groupByField(collection, column, query, "TBD", page, perPage, getSubject()),
null
);
}