public IGremlinQuery Apply(IGremlinQuery query) { var admin = query.AsAdmin(); var anonymous = GremlinQuery.Anonymous(admin.Model); var vertexCriterionTraversal = _vertexCriterion(anonymous.AsAdmin().ChangeQueryType <IVertexGremlinQuery <IVertex> >()); var edgeCriterionTraversal = _edgeCriterion(anonymous.AsAdmin().ChangeQueryType <IEdgeGremlinQuery <IEdge> >()); if (vertexCriterionTraversal.AsAdmin().Steps.Count > 0 || edgeCriterionTraversal.AsAdmin().Steps.Count > 0) { var strategy = GremlinQuery.Create <Unit>(admin.Model, GremlinQueryExecutor.Invalid, "SubgraphStrategy") .AddStep(BuildStep.Instance); if (vertexCriterionTraversal.AsAdmin().Steps.Count > 0) { strategy = strategy.AddStep(new VerticesStep(vertexCriterionTraversal)); } if (edgeCriterionTraversal.AsAdmin().Steps.Count > 0) { strategy = strategy.AddStep(new EdgesStep(edgeCriterionTraversal)); } return(query .AddStep(new WithStrategiesStep(strategy.AddStep(CreateStep.Instance)))); } return(query); }
public IGremlinQueryBase Apply(IGremlinQueryBase query) { var environment = query.AsAdmin().Environment; var anonymous = GremlinQuery.Anonymous(environment); var vertexCriterionTraversal = _vertexCriterion(anonymous.AsAdmin().ChangeQueryType <IVertexGremlinQuery <object> >()); var edgeCriterionTraversal = _edgeCriterion(anonymous.AsAdmin().ChangeQueryType <IEdgeGremlinQuery <object> >()); if (vertexCriterionTraversal.AsAdmin().Steps.Count > 0 || edgeCriterionTraversal.AsAdmin().Steps.Count > 0) { var strategy = GremlinQuery.Create <object>(environment) .AddStep(BuildStep.Instance); if (vertexCriterionTraversal.AsAdmin().Steps.Count > 0) { strategy = strategy.AddStep(new VerticesStep(vertexCriterionTraversal)); } if (edgeCriterionTraversal.AsAdmin().Steps.Count > 0) { strategy = strategy.AddStep(new EdgesStep(edgeCriterionTraversal)); } return(query .AddStep(new WithStrategiesStep(strategy.AddStep(CreateStep.Instance)))); } return(query); }