This is an automated email from the ASF dual-hosted git repository. taybou pushed a commit to branch UNOMI-347-graphql-query in repository https://gitbox.apache.org/repos/asf/unomi.git
commit 4f252566c012a08b1eed08516fcdfc106aade9cc Author: Taybou <[email protected]> AuthorDate: Wed Jun 10 11:44:05 2020 +0200 UNOMI-347 improve query results * Add GraphQL field totalSize in CDPPageInfo * Enable full-text search for GraphQL queries: findProfiles and findEvents --- .../graphql/fetchers/BaseConnectionDataFetcher.java | 2 ++ .../apache/unomi/graphql/fetchers/ConnectionParams.java | 16 ++++++++++++++-- .../graphql/fetchers/EventConnectionDataFetcher.java | 6 +++++- .../graphql/fetchers/ProfileConnectionDataFetcher.java | 6 +++++- .../graphql/fetchers/SegmentConnectionDataFetcher.java | 6 +++++- .../profile/PropertiesConnectionDataFetcher.java | 6 +++++- .../unomi/graphql/types/output/CDPListConnection.java | 6 +++++- .../apache/unomi/graphql/types/output/CDPPageInfo.java | 12 ++++++++++-- .../org/apache/unomi/graphql/types/output/CDPQuery.java | 2 ++ 9 files changed, 53 insertions(+), 9 deletions(-) diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/BaseConnectionDataFetcher.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/BaseConnectionDataFetcher.java index ded6e34..97579dd 100644 --- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/BaseConnectionDataFetcher.java +++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/BaseConnectionDataFetcher.java @@ -34,6 +34,7 @@ public abstract class BaseConnectionDataFetcher<T> extends BaseDataFetcher<T> { .last(parseParam("last", null, environment)) .after(parseParam("after", null, environment)) .before(parseParam("before", null, environment)) + .text(parseParam("text", null, environment)) .build(); } @@ -44,6 +45,7 @@ public abstract class BaseConnectionDataFetcher<T> extends BaseDataFetcher<T> { if (params != null) { query.setOffset(params.getOffset()); query.setLimit(params.getSize()); + query.setText(params.getText()); } if (orderByInputs != null) { diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/ConnectionParams.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/ConnectionParams.java index 412322a..f95723f 100644 --- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/ConnectionParams.java +++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/ConnectionParams.java @@ -18,18 +18,20 @@ package org.apache.unomi.graphql.fetchers; public class ConnectionParams { + public static final int DEFAULT_PAGE_SIZE = 10; + private Integer first; private Integer last; private String after; private String before; - - public static int DEFAULT_PAGE_SIZE = 10; + private String text; private ConnectionParams(final Builder builder) { first = builder.first; last = builder.last; after = builder.after; before = builder.before; + text = builder.text; if (first != null && before != null || last != null && after != null) { @@ -82,6 +84,10 @@ public class ConnectionParams { return before; } + public String getText() { + return text; + } + public static Builder create() { return new Builder(); } @@ -91,6 +97,7 @@ public class ConnectionParams { private Integer last; private String after; private String before; + private String text; private Builder() { } @@ -115,6 +122,11 @@ public class ConnectionParams { return this; } + public Builder text(String text) { + this.text = text; + return this; + } + public ConnectionParams build() { return new ConnectionParams(this); } diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/EventConnectionDataFetcher.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/EventConnectionDataFetcher.java index 50e4f2b..1ca708f 100644 --- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/EventConnectionDataFetcher.java +++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/EventConnectionDataFetcher.java @@ -30,7 +30,11 @@ public abstract class EventConnectionDataFetcher extends BaseConnectionDataFetch protected CDPEventConnection createEventConnection(PartialList<Event> events) { final List<CDPEventEdge> eventEdges = events.getList().stream().map(CDPEventEdge::new).collect(Collectors.toList()); - final CDPPageInfo pageInfo = new CDPPageInfo(events.getOffset() > 0, events.getTotalSize() > events.getList().size()); + final CDPPageInfo pageInfo = new CDPPageInfo( + events.getOffset() > 0, + events.getTotalSize() > events.getList().size(), + events.getTotalSize() + ); return new CDPEventConnection(eventEdges, pageInfo); } diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/ProfileConnectionDataFetcher.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/ProfileConnectionDataFetcher.java index 47ccf72..e8f5ad6 100644 --- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/ProfileConnectionDataFetcher.java +++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/ProfileConnectionDataFetcher.java @@ -32,7 +32,11 @@ public abstract class ProfileConnectionDataFetcher extends BaseConnectionDataFet final List<CDPProfileEdge> eventEdges = profiles.getList().stream() .map(CDPProfileEdge::new) .collect(Collectors.toList()); - final CDPPageInfo pageInfo = new CDPPageInfo(profiles.getOffset() > 0, profiles.getTotalSize() > profiles.getList().size()); + final CDPPageInfo pageInfo = new CDPPageInfo( + profiles.getOffset() > 0, + profiles.getTotalSize() > profiles.getList().size(), + profiles.getTotalSize() + ); return new CDPProfileConnection(eventEdges, pageInfo); } diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/SegmentConnectionDataFetcher.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/SegmentConnectionDataFetcher.java index dddf8be..2684850 100644 --- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/SegmentConnectionDataFetcher.java +++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/SegmentConnectionDataFetcher.java @@ -31,7 +31,11 @@ public abstract class SegmentConnectionDataFetcher extends BaseConnectionDataFet protected CDPSegmentConnection createSegmentConnection(PartialList<Segment> segments) { final List<CDPSegmentEdge> segmentEdges = segments.getList().stream().map(segment -> new CDPSegmentEdge(new CDPSegment(segment), segment.getItemId())).collect(Collectors.toList()); - final CDPPageInfo pageInfo = new CDPPageInfo(segments.getOffset() > 0, segments.getTotalSize() > segments.getList().size()); + final CDPPageInfo pageInfo = new CDPPageInfo( + segments.getOffset() > 0, + segments.getTotalSize() > segments.getList().size(), + segments.getTotalSize() + ); return new CDPSegmentConnection(segmentEdges, pageInfo); } diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/PropertiesConnectionDataFetcher.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/PropertiesConnectionDataFetcher.java index a4c663c..ad104fc 100644 --- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/PropertiesConnectionDataFetcher.java +++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/fetchers/profile/PropertiesConnectionDataFetcher.java @@ -50,7 +50,11 @@ public class PropertiesConnectionDataFetcher extends BaseConnectionDataFetcher<C return new CDPPropertyConnection(); } - final CDPPageInfo pageInfo = new CDPPageInfo(startIndex > 0, lastIndex < properties.size()); + final CDPPageInfo pageInfo = new CDPPageInfo( + startIndex > 0, + lastIndex < properties.size(), + (long) properties.size() + ); final List<CDPPropertyEdge> edges = new ArrayList<>(properties) .subList(startIndex, lastIndex) diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPListConnection.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPListConnection.java index ea60d5e..18127c4 100644 --- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPListConnection.java +++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPListConnection.java @@ -62,7 +62,11 @@ public class CDPListConnection { return null; } - return new CDPPageInfo(userLists.getOffset() > 0, userLists.getTotalSize() > userLists.getList().size()); + return new CDPPageInfo( + userLists.getOffset() > 0, + userLists.getTotalSize() > userLists.getList().size(), + userLists.getTotalSize() + ); } } diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPPageInfo.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPPageInfo.java index a5de12c..ce663ce 100644 --- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPPageInfo.java +++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPPageInfo.java @@ -28,13 +28,17 @@ public class CDPPageInfo { @GraphQLField private boolean hasNextPage; + @GraphQLField + private Long totalSize; + public CDPPageInfo() { - this(false, false); + this(false, false, 0L); } - public CDPPageInfo(boolean hasPreviousPage, boolean hasNextPage) { + public CDPPageInfo(boolean hasPreviousPage, boolean hasNextPage, Long totalSize) { this.hasPreviousPage = hasPreviousPage; this.hasNextPage = hasNextPage; + this.totalSize = totalSize; } public boolean isHasPreviousPage() { @@ -54,4 +58,8 @@ public class CDPPageInfo { this.hasNextPage = hasNextPage; return this; } + + public Long getTotalSize() { + return totalSize; + } } diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPQuery.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPQuery.java index c61cc92..b9085d9 100644 --- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPQuery.java +++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/types/output/CDPQuery.java @@ -68,6 +68,7 @@ public class CDPQuery { final @GraphQLName("after") String after, final @GraphQLName("last") Integer last, final @GraphQLName("before") String before, + final @GraphQLName("text") String text, final DataFetchingEnvironment environment) throws Exception { return new FindProfilesConnectionDataFetcher(filter, orderBy).get(environment); } @@ -88,6 +89,7 @@ public class CDPQuery { final @GraphQLName("after") String after, final @GraphQLName("last") Integer last, final @GraphQLName("before") String before, + final @GraphQLName("text") String text, final DataFetchingEnvironment environment) { return new FindEventsConnectionDataFetcher(filter, orderBy).get(environment); }
