Adjust to core changes (#14952)
Signed-off-by: Jan N. Klug <github@klug.nrw>
This commit is contained in:
@@ -384,6 +384,10 @@ public class DynamoDBPersistenceService implements QueryablePersistenceService {
|
||||
// Proceed with query
|
||||
//
|
||||
String itemName = filter.getItemName();
|
||||
if (itemName == null) {
|
||||
logger.warn("Item name is missing in filter {}", filter);
|
||||
return List.of();
|
||||
}
|
||||
Item item = getItemFromRegistry(itemName);
|
||||
if (item == null) {
|
||||
logger.warn("Could not get item {} from registry! Returning empty query results.", itemName);
|
||||
|
||||
@@ -54,7 +54,11 @@ public class DynamoDBQueryUtils {
|
||||
}
|
||||
QueryEnhancedRequest.Builder queryBuilder = QueryEnhancedRequest.builder()
|
||||
.scanIndexForward(filter.getOrdering() == Ordering.ASCENDING);
|
||||
addFilterbyItemAndTimeFilter(queryBuilder, expectedTableSchema, filter.getItemName(), filter);
|
||||
String itemName = filter.getItemName();
|
||||
if (itemName == null) {
|
||||
throw new IllegalArgumentException("Item name not set");
|
||||
}
|
||||
addFilterbyItemAndTimeFilter(queryBuilder, expectedTableSchema, itemName, filter);
|
||||
addStateFilter(queryBuilder, expectedTableSchema, item, dtoClass, filter);
|
||||
addProjection(dtoClass, expectedTableSchema, queryBuilder);
|
||||
return queryBuilder.build();
|
||||
@@ -154,26 +158,25 @@ public class DynamoDBQueryUtils {
|
||||
|
||||
private static void addFilterbyItemAndTimeFilter(QueryEnhancedRequest.Builder queryBuilder,
|
||||
ExpectedTableSchema expectedTableSchema, String partition, final FilterCriteria filter) {
|
||||
boolean hasBegin = filter.getBeginDate() != null;
|
||||
boolean hasEnd = filter.getEndDate() != null;
|
||||
ZonedDateTime begin = filter.getBeginDate();
|
||||
ZonedDateTime end = filter.getEndDate();
|
||||
boolean legacy = expectedTableSchema == ExpectedTableSchema.LEGACY;
|
||||
|
||||
AttributeConverter<ZonedDateTime> timeConverter = AbstractDynamoDBItem.getTimestampConverter(legacy);
|
||||
|
||||
if (!hasBegin && !hasEnd) {
|
||||
// No need to place time filter filter but we do filter by partition
|
||||
if (begin == null && end == null) {
|
||||
// No need to place time filter, but we do filter by partition
|
||||
queryBuilder.queryConditional(QueryConditional.keyEqualTo(k -> k.partitionValue(partition)));
|
||||
} else if (hasBegin && !hasEnd) {
|
||||
queryBuilder.queryConditional(QueryConditional.sortGreaterThan(
|
||||
k -> k.partitionValue(partition).sortValue(timeConverter.transformFrom(filter.getBeginDate()))));
|
||||
} else if (!hasBegin && hasEnd) {
|
||||
queryBuilder.queryConditional(QueryConditional.sortLessThan(
|
||||
k -> k.partitionValue(partition).sortValue(timeConverter.transformFrom(filter.getEndDate()))));
|
||||
} else {
|
||||
assert hasBegin && hasEnd; // invariant
|
||||
} else if (begin != null && end == null) {
|
||||
queryBuilder.queryConditional(QueryConditional
|
||||
.sortGreaterThan(k -> k.partitionValue(partition).sortValue(timeConverter.transformFrom(begin))));
|
||||
} else if (begin == null && end != null) {
|
||||
queryBuilder.queryConditional(QueryConditional
|
||||
.sortLessThan(k -> k.partitionValue(partition).sortValue(timeConverter.transformFrom(end))));
|
||||
} else if (begin != null && end != null) {
|
||||
queryBuilder.queryConditional(QueryConditional.sortBetween(
|
||||
k -> k.partitionValue(partition).sortValue(timeConverter.transformFrom(filter.getBeginDate())),
|
||||
k -> k.partitionValue(partition).sortValue(timeConverter.transformFrom(filter.getEndDate()))));
|
||||
k -> k.partitionValue(partition).sortValue(timeConverter.transformFrom(begin)),
|
||||
k -> k.partitionValue(partition).sortValue(timeConverter.transformFrom(end))));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user