mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-10-26 16:16:10 +01:00
Add aggregate functions and streams in queryable store
First, aggregate functions for minimum, maximum, sum and average have been added to the queryable store API. These can be used with the query fields, which have been enhanced for this. Second, an additional stream like API has been added to retrieve collections to avoid the creation of huge result objects.
This commit is contained in:
@@ -20,21 +20,17 @@ import com.squareup.javapoet.ClassName;
|
||||
import com.squareup.javapoet.TypeName;
|
||||
|
||||
class NumberQueryFieldHandler extends QueryFieldHandler {
|
||||
public NumberQueryFieldHandler(String packageName, String className) {
|
||||
this(packageName, className, null);
|
||||
}
|
||||
|
||||
public NumberQueryFieldHandler(String packageName, String className, String suffix) {
|
||||
NumberQueryFieldHandler(String className) {
|
||||
super(
|
||||
"NumberQueryField",
|
||||
new TypeName[]{ClassName.get(packageName, className)},
|
||||
className + "QueryField",
|
||||
new TypeName[]{},
|
||||
(fieldBuilder, element, fieldClass, fieldName) -> fieldBuilder
|
||||
.initializer(
|
||||
"new $T<>($S)",
|
||||
ClassName.get("sonia.scm.store", "QueryableStore").nestedClass(fieldClass),
|
||||
fieldName
|
||||
),
|
||||
suffix
|
||||
null
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -264,19 +264,15 @@ class QueryFieldClassCreator {
|
||||
SIMPLE_INITIALIZER));
|
||||
case "int", "java.lang.Integer" -> List.of(
|
||||
new NumberQueryFieldHandler(
|
||||
"java.lang",
|
||||
"Integer"));
|
||||
case "long", "java.lang.Long" -> List.of(
|
||||
new NumberQueryFieldHandler(
|
||||
"java.lang",
|
||||
"Long"));
|
||||
case "float", "java.lang.Float" -> List.of(
|
||||
new NumberQueryFieldHandler(
|
||||
"java.lang",
|
||||
"Float"));
|
||||
case "double", "java.lang.Double" -> List.of(
|
||||
new NumberQueryFieldHandler(
|
||||
"java.lang",
|
||||
"Double"));
|
||||
case "java.util.Date", "java.time.Instant" -> List.of(
|
||||
new QueryFieldHandler(
|
||||
|
||||
@@ -16,35 +16,31 @@
|
||||
|
||||
package sonia.scm.testing;
|
||||
|
||||
import java.lang.Double;
|
||||
import java.lang.Float;
|
||||
import java.lang.Integer;
|
||||
import java.lang.Long;
|
||||
import sonia.scm.store.QueryableStore;
|
||||
|
||||
public final class DQueryFields {
|
||||
public static final QueryableStore.IdQueryField<D> INTERNAL_ID =
|
||||
new QueryableStore.IdQueryField<>();
|
||||
|
||||
public static final QueryableStore.NumberQueryField<D, Integer> AGE =
|
||||
new QueryableStore.NumberQueryField<>("age");
|
||||
public static final QueryableStore.NumberQueryField<D, Integer> WEIGHT =
|
||||
new QueryableStore.NumberQueryField<>("weight");
|
||||
public static final QueryableStore.IntegerQueryField<D> AGE =
|
||||
new QueryableStore.IntegerQueryField<>("age");
|
||||
public static final QueryableStore.IntegerQueryField<D> WEIGHT =
|
||||
new QueryableStore.IntegerQueryField<>("weight");
|
||||
|
||||
public static final QueryableStore.NumberQueryField<D, Long> CREATIONTIME =
|
||||
new QueryableStore.NumberQueryField<>("creationTime");
|
||||
public static final QueryableStore.NumberQueryField<D, Long> LASTMODIFIED =
|
||||
new QueryableStore.NumberQueryField<>("lastModified");
|
||||
public static final QueryableStore.LongQueryField<D> CREATIONTIME =
|
||||
new QueryableStore.LongQueryField<>("creationTime");
|
||||
public static final QueryableStore.LongQueryField<D> LASTMODIFIED =
|
||||
new QueryableStore.LongQueryField<>("lastModified");
|
||||
|
||||
public static final QueryableStore.NumberQueryField<D, Float> HEIGHT =
|
||||
new QueryableStore.NumberQueryField<>("height");
|
||||
public static final QueryableStore.NumberQueryField<D, Float> WIDTH =
|
||||
new QueryableStore.NumberQueryField<>("width");
|
||||
public static final QueryableStore.FloatQueryField<D> HEIGHT =
|
||||
new QueryableStore.FloatQueryField<>("height");
|
||||
public static final QueryableStore.FloatQueryField<D> WIDTH =
|
||||
new QueryableStore.FloatQueryField<>("width");
|
||||
|
||||
public static final QueryableStore.NumberQueryField<D, Double> PRICE =
|
||||
new QueryableStore.NumberQueryField<>("price");
|
||||
public static final QueryableStore.NumberQueryField<D, Double> MARGIN =
|
||||
new QueryableStore.NumberQueryField<>("margin");
|
||||
public static final QueryableStore.DoubleQueryField<D> PRICE =
|
||||
new QueryableStore.DoubleQueryField<>("price");
|
||||
public static final QueryableStore.DoubleQueryField<D> MARGIN =
|
||||
new QueryableStore.DoubleQueryField<>("margin");
|
||||
|
||||
private DQueryFields() {
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user