internal virtual void Is(GremlinToSqlContext currentContext, Predicate predicate) { WScalarExpression firstExpr = GetDefaultProjection().ToScalarExpression(); WScalarExpression secondExpr = SqlUtil.GetValueExpr(predicate.Value); currentContext.AddPredicate(SqlUtil.GetBooleanComparisonExpr(firstExpr, secondExpr, predicate)); }
internal void HasId(GremlinVariable lastVariable, Predicate predicate) { WScalarExpression firstExpr = lastVariable.GetVariableProperty(lastVariable.GetPrimaryKey()).ToScalarExpression(); WScalarExpression secondExpr = SqlUtil.GetValueExpr(predicate.Value); AddPredicate(SqlUtil.GetBooleanComparisonExpr(firstExpr, secondExpr, BooleanComparisonType.Equals)); }
internal void Has(GremlinVariable lastVariable, string propertyKey, Predicate predicate) { WScalarExpression firstExpr = lastVariable.GetVariableProperty(propertyKey).ToScalarExpression(); WScalarExpression secondExpr = SqlUtil.GetValueExpr(predicate.Value); AddPredicate(SqlUtil.GetBooleanComparisonExpr(firstExpr, secondExpr, predicate)); }
internal virtual void Is(GremlinToSqlContext currentContext, Predicate predicate) { WScalarExpression secondExpr = SqlUtil.GetValueExpr(predicate.Value); var firstExpr = DefaultVariableProperty().ToScalarExpression(); var booleanExpr = SqlUtil.GetBooleanComparisonExpr(firstExpr, secondExpr, predicate); currentContext.AddPredicate(booleanExpr); }
internal void HasId(GremlinVariable lastVariable, List <object> values) { List <WBooleanExpression> booleanExprList = new List <WBooleanExpression>(); foreach (var value in values) { WScalarExpression firstExpr = lastVariable.GetVariableProperty(lastVariable.GetPrimaryKey()).ToScalarExpression(); WScalarExpression secondExpr = SqlUtil.GetValueExpr(value); booleanExprList.Add(SqlUtil.GetBooleanComparisonExpr(firstExpr, secondExpr, BooleanComparisonType.Equals)); } WBooleanExpression concatSql = SqlUtil.ConcatBooleanExprWithOr(booleanExprList); AddPredicate(SqlUtil.GetBooleanParenthesisExpr(concatSql)); }
internal virtual void Where(GremlinToSqlContext currentContext, Predicate predicate) { var compareVar = currentContext.Select(predicate.Value as string); if (compareVar.Count > 1) { throw new Exception(); } var firstExpr = DefaultProjection().ToScalarExpression(); var secondExpr = compareVar.First().DefaultProjection().ToScalarExpression(); var booleanExpr = SqlUtil.GetBooleanComparisonExpr(firstExpr, secondExpr, predicate); currentContext.AddPredicate(booleanExpr); }
private WBooleanExpression CreateBooleanExpression(GremlinVariableProperty variableProperty, object valuesOrPredicate) { if (valuesOrPredicate is string || valuesOrPredicate is int || valuesOrPredicate is bool) { WScalarExpression firstExpr = variableProperty.ToScalarExpression(); WScalarExpression secondExpr = SqlUtil.GetValueExpr(valuesOrPredicate); return(SqlUtil.GetEqualBooleanComparisonExpr(firstExpr, secondExpr)); } if (valuesOrPredicate is Predicate) { WScalarExpression firstExpr = variableProperty.ToScalarExpression(); WScalarExpression secondExpr = SqlUtil.GetValueExpr((valuesOrPredicate as Predicate).Value); return(SqlUtil.GetBooleanComparisonExpr(firstExpr, secondExpr, valuesOrPredicate as Predicate)); } throw new ArgumentException(); }
internal WBooleanExpression GetWherePredicate(GremlinToSqlContext currentContext, GremlinVariable firstVar, Predicate predicate, TraversalRing traversalRing) { AndPredicate andPredicate = predicate as AndPredicate; if (andPredicate != null) { List <WBooleanExpression> booleanList = new List <WBooleanExpression>(); foreach (var p in andPredicate.PredicateList) { booleanList.Add(GetWherePredicate(currentContext, firstVar, p, traversalRing)); } return(SqlUtil.ConcatBooleanExprWithAnd(booleanList)); } OrPredicate orPredicate = predicate as OrPredicate; if (orPredicate != null) { List <WBooleanExpression> booleanList = new List <WBooleanExpression>(); foreach (var p in orPredicate.PredicateList) { booleanList.Add(GetWherePredicate(currentContext, firstVar, p, traversalRing)); } return(SqlUtil.ConcatBooleanExprWithOr(booleanList)); } var selectKeys = new List <string>() { predicate.Value as string }; var selectTraversal = new List <GraphTraversal2>() { traversalRing.Next() }; var selectVar = GetSelectVar(currentContext, GremlinKeyword.Pop.Last, selectKeys, selectTraversal); var firstExpr = firstVar.GetDefaultProjection().ToScalarExpression(); var secondExpr = selectVar.GetDefaultProjection().ToScalarExpression(); return(SqlUtil.GetBooleanComparisonExpr(firstExpr, secondExpr, predicate)); }