Skip to content

Commit

Permalink
feat: upgrade cursor executor
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 9, 2024
1 parent d8ef8a3 commit fc255e3
Showing 1 changed file with 11 additions and 13 deletions.
Expand Up @@ -30,30 +30,29 @@ enum CursorExecutor {
OFF_SET {
@SuppressWarnings("unchecked")
@Override
public CursoredPage<CommunicationEntity> cursor(SelectQuery query, PageRequest<?> pageRequest, DatabaseManager template) {
public CursoredPage<CommunicationEntity> cursor(SelectQuery query, PageRequest pageRequest, DatabaseManager template) {

var select = new DefaultSelectQuery(pageRequest.size(), 0, query.name(), query.columns(), query.sorts(),
query.condition().orElse(null));

var entities = template.select(select).toList();
var last = entities.isEmpty() ? null : entities.get(entities.size() - 1);
if (last == null) {
return new CursoredPageRecord<>(entities, Collections.emptyList(), -1, (PageRequest<CommunicationEntity>) pageRequest,
return new CursoredPageRecord<>(entities, Collections.emptyList(), -1, pageRequest,
null, null);
} else {
PageRequest.Cursor cursor = getCursor(query.sorts(), last);
PageRequest<CommunicationEntity> afterCursor = PageRequest.<CommunicationEntity>ofSize(pageRequest.size()).afterCursor(cursor);
PageRequest afterCursor = PageRequest.<CommunicationEntity>ofSize(pageRequest.size()).afterCursor(cursor);

return new CursoredPageRecord<>(entities, List.of(cursor), -1, (PageRequest<CommunicationEntity>)
pageRequest, afterCursor, null);
return new CursoredPageRecord<>(entities, List.of(cursor), -1, pageRequest, afterCursor, null);
}
}


}, CURSOR_NEXT {
@SuppressWarnings("unchecked")
@Override
public CursoredPage<CommunicationEntity> cursor(SelectQuery query, PageRequest<?> pageRequest, DatabaseManager template) {
public CursoredPage<CommunicationEntity> cursor(SelectQuery query, PageRequest pageRequest, DatabaseManager template) {

var cursor = pageRequest.cursor().orElseThrow();
var condition = condition(query, cursor);
Expand All @@ -63,12 +62,12 @@ public CursoredPage<CommunicationEntity> cursor(SelectQuery query, PageRequest<?
var entities = template.select(select).toList();
var last = entities.isEmpty() ? null : entities.get(entities.size() - 1);
if (last == null) {
return new CursoredPageRecord<>(entities, Collections.emptyList(), -1, (PageRequest<CommunicationEntity>) pageRequest,
return new CursoredPageRecord<>(entities, Collections.emptyList(), -1, pageRequest,
null, null);
} else {
var nextCursor = getCursor(query.sorts(), last);
var afterCursor = PageRequest.<CommunicationEntity>ofSize(pageRequest.size()).afterCursor(nextCursor);
return new CursoredPageRecord<>(entities, List.of(cursor, nextCursor), -1, (PageRequest<CommunicationEntity>)
return new CursoredPageRecord<>(entities, List.of(cursor, nextCursor), -1,
pageRequest, afterCursor, null);
}
}
Expand Down Expand Up @@ -97,7 +96,7 @@ private static CriteriaCondition condition(SelectQuery query, PageRequest.Cursor
}, CURSOR_PREVIOUS {
@SuppressWarnings("unchecked")
@Override
public CursoredPage<CommunicationEntity> cursor(SelectQuery query, PageRequest<?> pageRequest, DatabaseManager template) {
public CursoredPage<CommunicationEntity> cursor(SelectQuery query, PageRequest pageRequest, DatabaseManager template) {
var cursor = pageRequest.cursor().orElseThrow();
var condition = condition(query, cursor);

Expand All @@ -106,14 +105,13 @@ public CursoredPage<CommunicationEntity> cursor(SelectQuery query, PageRequest<?
var entities = template.select(select).toList();
var last = entities.isEmpty() ? null : entities.get(entities.size() - 1);
if (last == null) {
return new CursoredPageRecord<>(entities, Collections.emptyList(), -1, (PageRequest<CommunicationEntity>) pageRequest,
return new CursoredPageRecord<>(entities, Collections.emptyList(), -1, pageRequest,
null, null);
} else {
var beforeCursor = getCursor(query.sorts(), last);
var beforeRequest = PageRequest.<CommunicationEntity>ofSize(pageRequest.size()).beforeCursor(beforeCursor);

return new CursoredPageRecord<>(entities, List.of(beforeCursor, cursor), -1, (PageRequest<CommunicationEntity>)
pageRequest, null, beforeRequest);
return new CursoredPageRecord<>(entities, List.of(beforeCursor, cursor), -1, pageRequest, null, beforeRequest);
}
}

Expand All @@ -138,7 +136,7 @@ private static CriteriaCondition condition(SelectQuery query, PageRequest.Cursor
}
};

abstract CursoredPage<CommunicationEntity> cursor(SelectQuery query, PageRequest<?> pageRequest, DatabaseManager template);
abstract CursoredPage<CommunicationEntity> cursor(SelectQuery query, PageRequest pageRequest, DatabaseManager template);

public static CursorExecutor of(PageRequest.Mode value) {

Expand Down

0 comments on commit fc255e3

Please sign in to comment.