Skip to content

Commit 185b78e

Browse files
committed
Skip edges with skip annotation. Skip fields with skip annotation. Do not generate operations for skipped edges with annotations.
1 parent 4ec1976 commit 185b78e

File tree

1 file changed

+37
-14
lines changed

1 file changed

+37
-14
lines changed

entoas/generator.go

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,20 @@ func schemas(g *gen.Graph, spec *ogen.Spec) error {
7070
return fmt.Errorf("schema %q not found for edge %q on %q", e.Type.Name, e.Name, n.Name)
7171
}
7272
es = es.ToNamed(e.Type.Name).AsLocalRef()
73-
if !e.Unique {
74-
es = es.AsArray()
73+
a, err := EdgeAnnotation(e)
74+
if err != nil {
75+
return fmt.Errorf("could not parse %q edge annotation for %q on %q", e.Type.Name, e.Name, n.Name)
76+
}
77+
if !a.Skip {
78+
if !e.Unique {
79+
es = es.AsArray()
80+
}
81+
addProperty(
82+
spec.Components.Schemas[n.Name],
83+
ogen.NewProperty().SetName(e.Name).SetSchema(es),
84+
!e.Optional,
85+
)
7586
}
76-
addProperty(
77-
spec.Components.Schemas[n.Name],
78-
ogen.NewProperty().SetName(e.Name).SetSchema(es),
79-
!e.Optional,
80-
)
8187
}
8288
}
8389
// If the SimpleModels feature is enabled to not generate a schema per response.
@@ -110,14 +116,20 @@ func schemas(g *gen.Graph, spec *ogen.Spec) error {
110116
return fmt.Errorf("schema %q not found for edge %q on %q", vn, e.Name, n)
111117
}
112118
es = es.ToNamed(vn).AsLocalRef()
113-
if !e.Unique {
114-
es = es.AsArray()
119+
a, err := EdgeAnnotation(e)
120+
if err != nil {
121+
return fmt.Errorf("could not parse %q edge annotation for %q on %q", e.Name, e.Name, n)
122+
}
123+
if !a.Skip {
124+
if !e.Unique {
125+
es = es.AsArray()
126+
}
127+
addProperty(
128+
spec.Components.Schemas[n],
129+
ogen.NewProperty().SetName(e.Name).SetSchema(es),
130+
!e.Optional,
131+
)
115132
}
116-
addProperty(
117-
spec.Components.Schemas[n],
118-
ogen.NewProperty().SetName(e.Name).SetSchema(es),
119-
!e.Optional,
120-
)
121133
}
122134
}
123135
}
@@ -662,6 +674,10 @@ func EdgeOperations(e *gen.Edge) ([]Operation, error) {
662674
if err := ant.Decode(e.Annotations[ant.Name()]); err != nil {
663675
return nil, err
664676
}
677+
// Skipped edges get no operations
678+
if ant.Skip {
679+
return nil, nil
680+
}
665681
var ops []Operation
666682
m := make(map[Operation]OperationConfig)
667683
if e.Unique {
@@ -724,6 +740,13 @@ func reqBody(n *gen.Type, op Operation, allowClientUUIDs bool) (*ogen.RequestBod
724740
if err != nil {
725741
return nil, err
726742
}
743+
a, err := EdgeAnnotation(e)
744+
if err != nil {
745+
return nil, err
746+
}
747+
if a.ReadOnly || a.Skip {
748+
continue
749+
}
727750
if !e.Unique {
728751
s = s.AsArray()
729752
}

0 commit comments

Comments
 (0)