From 0c7679e571be3299a5b273c4378cac9a37eada9b Mon Sep 17 00:00:00 2001 From: Ariel Mashraki Date: Tue, 8 Mar 2022 22:21:51 +0200 Subject: [PATCH] entc/gen: set Ref and Inverse for edge contains both From and To --- entc/gen/graph.go | 10 +++++++--- entc/gen/graph_test.go | 4 ++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/entc/gen/graph.go b/entc/gen/graph.go index 8293851102..e20e683a72 100644 --- a/entc/gen/graph.go +++ b/entc/gen/graph.go @@ -310,7 +310,7 @@ func (g *Graph) addEdges(schema *load.Schema) { ref := e.Ref expect(e.RefName == "", "reference name is derived from the assoc name: %s.%s <-> %s.%s", t.Name, ref.Name, t.Name, e.Name) expect(ref.Type == t.Name, "assoc-inverse edge allowed only as o2o relation of the same type") - t.Edges = append(t.Edges, &Edge{ + from := &Edge{ def: e, Type: typ, Name: e.Name, @@ -320,8 +320,10 @@ func (g *Graph) addEdges(schema *load.Schema) { Optional: !e.Required, StructTag: structTag(e.Name, e.Tag), Annotations: e.Annotations, - }, &Edge{ + } + to := &Edge{ def: ref, + Ref: from, Type: typ, Owner: t, Name: ref.Name, @@ -329,7 +331,9 @@ func (g *Graph) addEdges(schema *load.Schema) { Optional: !ref.Required, StructTag: structTag(ref.Name, ref.Tag), Annotations: ref.Annotations, - }) + } + from.Ref = to + t.Edges = append(t.Edges, from, to) default: panic(graphError{"edge must be either an assoc or inverse edge"}) } diff --git a/entc/gen/graph_test.go b/entc/gen/graph_test.go index 2d82f24c8d..61bea6c4a3 100644 --- a/entc/gen/graph_test.go +++ b/entc/gen/graph_test.go @@ -123,7 +123,11 @@ func TestNewGraph(t *testing.T) { require.Equal(graph.Nodes[0], e1.Type) require.Equal("t2_m2m_from", t2.Edges[5].Name) + require.Equal("t2_m2m_to", t2.Edges[5].Inverse) require.Equal("t2_m2m_to", t2.Edges[6].Name) + require.Empty(t2.Edges[6].Inverse) + require.Equal(t2.Edges[6], t2.Edges[5].Ref) + require.Equal(t2.Edges[5], t2.Edges[6].Ref) require.Equal(map[string]string{"Name": "From"}, t2.Edges[5].Annotations["GQL"]) require.Equal(map[string]string{"Name": "To"}, t2.Edges[6].Annotations["GQL"]) }