func printStructDefinition(ctx context.Context, env *envctx.Env, g *builder.Builder, typ *system.Type) error { if typ.Description != "" { g.Println("// ", typ.Description) } g.Println("type ", system.GoName(typ.Id.Name), " struct {") { if !typ.Basic { g.Println("*", g.SprintRef("kego.io/system", system.GoName("object"))) } embedsSortable := system.SortableReferences(typ.Embed) sort.Sort(embedsSortable) embeds := []*system.Reference(embedsSortable) for _, embed := range embeds { g.Println("*", builder.Reference(embed.Package, system.GoName(embed.Name), env.Path, g.Imports.Add)) } for _, nf := range typ.SortedFields() { b := nf.Rule.(system.ObjectInterface).GetObject(nil) if b.Description != "" { g.Println("// ", b.Description) } descriptor, err := builder.FieldTypeDefinition(ctx, nf.Name, nf.Rule, env.Path, g.Imports.Add) if err != nil { return kerr.Wrap("GDSKJDEKQD", err) } g.Println(system.GoName(nf.Name), " ", descriptor) } } g.Println("}") return nil }