You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@s2graph.apache.org by st...@apache.org on 2018/04/23 04:29:38 UTC

[6/8] incubator-s2graph git commit: refactor: (vertex, queryParam) -> edgeQueryParam

refactor: (vertex, queryParam) -> edgeQueryParam


Project: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/commit/d7a630d4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/tree/d7a630d4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-s2graph/diff/d7a630d4

Branch: refs/heads/master
Commit: d7a630d418d9fb4468197f97d8ec5346b63cc5f3
Parents: 8ed6d20
Author: daewon <da...@apache.org>
Authored: Fri Apr 20 15:59:18 2018 +0900
Committer: daewon <da...@apache.org>
Committed: Fri Apr 20 15:59:23 2018 +0900

----------------------------------------------------------------------
 .../graphql/repository/GraphRepository.scala    | 26 +++++++++-----------
 .../s2graph/graphql/types/FieldResolver.scala   |  5 ++--
 .../apache/s2graph/graphql/types/S2Type.scala   | 13 ++++------
 3 files changed, 20 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/d7a630d4/s2graphql/src/main/scala/org/apache/s2graph/graphql/repository/GraphRepository.scala
----------------------------------------------------------------------
diff --git a/s2graphql/src/main/scala/org/apache/s2graph/graphql/repository/GraphRepository.scala b/s2graphql/src/main/scala/org/apache/s2graph/graphql/repository/GraphRepository.scala
index e5a04b1..3bfa556 100644
--- a/s2graphql/src/main/scala/org/apache/s2graph/graphql/repository/GraphRepository.scala
+++ b/s2graphql/src/main/scala/org/apache/s2graph/graphql/repository/GraphRepository.scala
@@ -40,8 +40,8 @@ object GraphRepository {
     override def id(value: (VertexQueryParam, Seq[S2VertexLike])): VertexQueryParam = value._1
   }
 
-  implicit val edgeHasId = new HasId[(S2VertexLike, QueryParam, Seq[S2EdgeLike]), DeferFetchEdges] {
-    override def id(value: (S2VertexLike, QueryParam, Seq[S2EdgeLike])): DeferFetchEdges = DeferFetchEdges(value._1, value._2)
+  implicit val edgeHasId = new HasId[(EdgeQueryParam, Seq[S2EdgeLike]), EdgeQueryParam] {
+    override def id(value: (EdgeQueryParam, Seq[S2EdgeLike])): EdgeQueryParam = value._1
   }
 
   val vertexFetcher =
@@ -51,19 +51,20 @@ object GraphRepository {
       Future.traverse(queryParams)(ctx.getVertices).map(vs => queryParams.zip(vs))
     })
 
-  val edgeFetcher = Fetcher((ctx: GraphRepository, ids: Seq[DeferFetchEdges]) => {
+  val edgeFetcher = Fetcher((ctx: GraphRepository, edgeQueryParams: Seq[EdgeQueryParam]) => {
     implicit val ec = ctx.ec
 
-    val edgesByParam = ids.groupBy(_.qp).map { case (qp, deLs) =>
-      val vertices = deLs.map(de => de.v)
-
-      ctx.getEdges(vertices, qp).map(qp -> _)
+    val edgesByParam = edgeQueryParams.groupBy(_.qp).toSeq.map { case (qp, edgeQueryParams) =>
+      val vertices = edgeQueryParams.map(_.v)
+      ctx.getEdges(vertices, qp).map(edges => qp -> edges)
     }
 
-    val f: Future[Iterable[(QueryParam, Seq[S2EdgeLike])]] = Future.sequence(edgesByParam)
-    val grouped: Future[Seq[(S2VertexLike, QueryParam, Seq[S2EdgeLike])]] = f.map { tpLs =>
-      tpLs.toSeq.flatMap { case (qp, edges) =>
-        edges.groupBy(_.srcForVertex).map { case (v, edges) => (v, qp, edges) }
+    val f: Future[Seq[(QueryParam, Seq[S2EdgeLike])]] = Future.sequence(edgesByParam)
+    val grouped: Future[Seq[(EdgeQueryParam, Seq[S2EdgeLike])]] = f.map { tpLs =>
+      tpLs.flatMap { case (qp, edges) =>
+        edges.groupBy(_.srcForVertex).map {
+          case (v, edges) => EdgeQueryParam(v, qp) -> edges
+        }
       }
     }
 
@@ -78,9 +79,6 @@ object GraphRepository {
 
     tryObj
   }
-
-  case class DeferFetchEdges(v: S2VertexLike, qp: QueryParam)
-
 }
 
 class GraphRepository(val graph: S2GraphLike) {

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/d7a630d4/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/FieldResolver.scala
----------------------------------------------------------------------
diff --git a/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/FieldResolver.scala b/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/FieldResolver.scala
index 1625f58..4423dc8 100644
--- a/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/FieldResolver.scala
+++ b/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/FieldResolver.scala
@@ -4,6 +4,7 @@ import org.apache.s2graph.core._
 import org.apache.s2graph.core.mysqls._
 import org.apache.s2graph.graphql.bind.AstHelper
 import org.apache.s2graph.graphql.repository.GraphRepository
+import org.apache.s2graph.graphql.types.S2Type.EdgeQueryParam
 import sangria.schema._
 
 object FieldResolver {
@@ -28,7 +29,7 @@ object FieldResolver {
     }
   }
 
-  def label(label: Label, c: Context[GraphRepository, Any]): (S2VertexLike, QueryParam) = {
+  def label(label: Label, c: Context[GraphRepository, Any]): EdgeQueryParam = {
     val vertex = c.value.asInstanceOf[S2VertexLike]
 
     val dir = c.arg[String]("direction")
@@ -46,7 +47,7 @@ object FieldResolver {
       where = where
     )
 
-    (vertex, qp)
+    EdgeQueryParam(vertex, qp)
   }
 
   def serviceColumnOnService(column: ServiceColumn, c: Context[GraphRepository, Any]): VertexQueryParam = {

http://git-wip-us.apache.org/repos/asf/incubator-s2graph/blob/d7a630d4/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2Type.scala
----------------------------------------------------------------------
diff --git a/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2Type.scala b/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2Type.scala
index c189fe3..c10d85e 100644
--- a/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2Type.scala
+++ b/s2graphql/src/main/scala/org/apache/s2graph/graphql/types/S2Type.scala
@@ -19,22 +19,20 @@
 
 package org.apache.s2graph.graphql.types
 
-import scala.concurrent._
-import org.apache.s2graph.core.Management.JsonModel.{Index, Prop}
+import org.apache.s2graph.core.Management.JsonModel._
 import org.apache.s2graph.core._
 import org.apache.s2graph.core.mysqls._
 import org.apache.s2graph.graphql
 import org.apache.s2graph.graphql.repository.GraphRepository
 import sangria.schema._
-import org.apache.s2graph.graphql.bind.AstHelper
-import org.apache.s2graph.graphql.repository
-import org.apache.s2graph.graphql.repository.GraphRepository.DeferFetchEdges
 import org.apache.s2graph.graphql.types.StaticTypes._
 
 import scala.language.existentials
 
 object S2Type {
 
+  case class EdgeQueryParam(v: S2VertexLike, qp: QueryParam)
+
   case class AddVertexParam(timestamp: Long,
                             id: Any,
                             columnName: String,
@@ -215,11 +213,10 @@ object S2Type {
       resolve = { c =>
         implicit val ec = c.ctx.ec
 
-        val (vertex, queryParam) = graphql.types.FieldResolver.label(label, c)
-        val de = DeferFetchEdges(vertex, queryParam)
+        val edgeQueryParam = graphql.types.FieldResolver.label(label, c)
         val empty = Seq.empty[S2EdgeLike]
 
-        DeferredValue(GraphRepository.edgeFetcher.deferOpt(de)).map(m => m.fold(empty)(_._3))
+        DeferredValue(GraphRepository.edgeFetcher.deferOpt(edgeQueryParam)).map(m => m.fold(empty)(_._2))
       }
     )