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);
     }

Reply via email to