@@ -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