entc/gen: reject codegen in case of duplicate edges (#858)

See #856
This commit is contained in:
Ariel Mashraki
2020-10-16 14:04:52 +03:00
committed by GitHub
parent 2128d0baee
commit 7635d45c8a
3 changed files with 26 additions and 3 deletions

View File

@@ -200,9 +200,13 @@ func (g *Graph) addIndexes(schema *load.Schema) {
// addEdges adds the node edges to the graph.
func (g *Graph) addEdges(schema *load.Schema) {
t, _ := g.typ(schema.Name)
seen := make(map[string]struct{}, len(schema.Edges))
for _, e := range schema.Edges {
typ, ok := g.typ(e.Type)
expect(ok, "type %q does not exist for edge", e.Type)
_, ok = seen[e.Name]
expect(!ok, "%s schema contains multiple %q edges", schema.Name, e.Name)
seen[e.Name] = struct{}{}
switch {
// Assoc only.
case !e.Inverse: