mirror of
https://github.com/ent/ent.git
synced 2026-04-30 06:30:55 +03:00
dialect/sql/sqlgraph: support edgeschema in entgql (#2817)
This commit is contained in:
@@ -244,9 +244,22 @@ func (e *state) evalBinary(expr *entql.BinaryExpr) *sql.Predicate {
|
||||
func (e *state) evalEdge(name string, exprs ...entql.Expr) *sql.Predicate {
|
||||
edge, ok := e.context.Edges[name]
|
||||
expect(ok, "edge %q was not found for node %q", name, e.context.Type)
|
||||
var toC string
|
||||
switch {
|
||||
case edge.To.ID != nil:
|
||||
toC = edge.To.ID.Column
|
||||
// Edge-owner points to its edge schema.
|
||||
case edge.To.CompositeID != nil && !edge.Spec.Inverse:
|
||||
toC = edge.To.CompositeID[0].Column
|
||||
// Edge-backref points to its edge schema.
|
||||
case edge.To.CompositeID != nil && edge.Spec.Inverse:
|
||||
toC = edge.To.CompositeID[1].Column
|
||||
default:
|
||||
panic(evalError{fmt.Sprintf("expect id definition for edge %q", name)})
|
||||
}
|
||||
step := NewStep(
|
||||
From(e.context.Table, e.context.ID.Column),
|
||||
To(edge.To.Table, edge.To.ID.Column),
|
||||
To(edge.To.Table, toC),
|
||||
Edge(edge.Spec.Rel, edge.Spec.Inverse, edge.Spec.Table, edge.Spec.Columns...),
|
||||
)
|
||||
selector := e.selector.Clone().SetP(nil)
|
||||
|
||||
Reference in New Issue
Block a user