MCPcopy Index your code
hub / github.com/ent/ent / evalExpr

Method evalExpr

dialect/sql/sqlgraph/entql.go:172–203  ·  view source on GitHub ↗

evalExpr evaluates any expression.

(expr entql.Expr)

Source from the content-addressed store, hash-verified

170
171// evalExpr evaluates any expression.
172func (e *state) evalExpr(expr entql.Expr) *sql.Predicate {
173 switch expr := expr.(type) {
174 case *entql.BinaryExpr:
175 return e.evalBinary(expr)
176 case *entql.UnaryExpr:
177 return sql.Not(e.evalExpr(expr.X))
178 case *entql.NaryExpr:
179 ps := make([]*sql.Predicate, len(expr.Xs))
180 for i, x := range expr.Xs {
181 ps[i] = e.evalExpr(x)
182 }
183 return nary[expr.Op](ps...)
184 case *entql.CallExpr:
185 switch expr.Func {
186 case entql.FuncHasPrefix, entql.FuncHasSuffix, entql.FuncContains, entql.FuncEqualFold, entql.FuncContainsFold:
187 expect(len(expr.Args) == 2, "invalid number of arguments for %s", expr.Func)
188 f, ok := expr.Args[0].(*entql.Field)
189 expect(ok, "*entql.Field, got %T", expr.Args[0])
190 v, ok := expr.Args[1].(*entql.Value)
191 expect(ok, "*entql.Value, got %T", expr.Args[1])
192 s, ok := v.V.(string)
193 expect(ok, "string value, got %T", v.V)
194 return strFunc[expr.Func](e.field(f), s)
195 case entql.FuncHasEdge:
196 expect(len(expr.Args) > 0, "invalid number of arguments for %s", expr.Func)
197 edge, ok := expr.Args[0].(*entql.Edge)
198 expect(ok, "*entql.Edge, got %T", expr.Args[0])
199 return e.evalEdge(edge.Name, expr.Args[1:]...)
200 }
201 }
202 panic("invalid")
203}
204
205// evalBinary evaluates binary expressions.
206func (e *state) evalBinary(expr *entql.BinaryExpr) *sql.Predicate {

Callers 2

evalExprFunction · 0.95
evalBinaryMethod · 0.95

Implementers 2

Wrapperdialect/sql/builder.go
Builderdialect/sql/builder.go

Calls 5

evalBinaryMethod · 0.95
fieldMethod · 0.95
evalEdgeMethod · 0.95
NotFunction · 0.92
expectFunction · 0.70

Tested by

no test coverage detected