You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by ta...@apache.org on 2020/06/10 09:44:19 UTC

[unomi] branch UNOMI-347-graphql-query created (now 4f25256)

This is an automated email from the ASF dual-hosted git repository.

taybou pushed a change to branch UNOMI-347-graphql-query
in repository https://gitbox.apache.org/repos/asf/unomi.git.


      at 4f25256  UNOMI-347 improve query results

This branch includes the following new commits:

     new 4f25256  UNOMI-347 improve query results

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[unomi] 01/01: UNOMI-347 improve query results

Posted by ta...@apache.org.
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 <be...@gmail.com>
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);
     }