Skip to content

Commit

Permalink
fix(net/goai): embedded struct with tags also expand as properties of…
Browse files Browse the repository at this point in the history
… the parent struct (#3956)
  • Loading branch information
wlynxg authored Nov 23, 2024
1 parent 15f9497 commit ee3eb8d
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 1 deletion.
2 changes: 1 addition & 1 deletion net/goai/goai_shema.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ func (oai *OpenApiV3) structToSchema(object interface{}) (*Schema, error) {
// struct.
structFields, _ := gstructs.Fields(gstructs.FieldsInput{
Pointer: object,
RecursiveOption: gstructs.RecursiveOptionEmbeddedNoTag,
RecursiveOption: gstructs.RecursiveOptionEmbedded,
})
schema.Type = TypeObject
for _, structField := range structFields {
Expand Down
44 changes: 44 additions & 0 deletions net/goai/goai_z_unit_issue_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -256,3 +256,47 @@ func Test_Issue3889(t *testing.T) {
t.Assert(schema, Issue3889Res403Schema)
})
}

type Issue3930DefaultReq struct {
g.Meta `path:"/user/{id}" method:"get" tags:"User" summary:"Get one user"`
Id int64 `v:"required" dc:"user id"`
}
type Issue3930DefaultRes struct {
*Issue3930User `dc:"user"`
}
type Issue3930User struct {
Id uint `json:"id" orm:"id" description:"user id"` // user id
}

type Issue3930 struct{}

func (Issue3930) Default(ctx context.Context, req *Issue3930DefaultReq) (res *Issue3930DefaultRes, err error) {
res = &Issue3930DefaultRes{}
return
}

// https://github.com/gogf/gf/issues/3930
func Test_Issue3930(t *testing.T) {
gtest.C(t, func(t *gtest.T) {
s := g.Server(guid.S())
s.Use(ghttp.MiddlewareHandlerResponse)
s.Group("/", func(group *ghttp.RouterGroup) {
group.Bind(
new(Issue3930),
)
})
s.SetLogger(nil)
s.SetOpenApiPath("/api.json")
s.SetDumpRouterMap(false)
s.Start()
defer s.Shutdown()

time.Sleep(100 * time.Millisecond)

var (
api = s.GetOpenApi()
reqPath = "github.com.gogf.gf.v2.net.goai_test.Issue3930DefaultRes"
)
t.AssertNE(api.Components.Schemas.Get(reqPath).Value.Properties.Get("id"), nil)
})
}

0 comments on commit ee3eb8d

Please sign in to comment.