1
0
mirror of https://github.com/beego/bee.git synced 2024-11-22 10:10:53 +00:00

Merge pull request #490 from skOak/develop

add swagger spec support for struct embedded field
This commit is contained in:
astaxie 2017-11-21 11:43:33 +08:00 committed by GitHub
commit bfeaf6c8df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1092,15 +1092,41 @@ func parseStruct(st *ast.StructType, k string, m *swagger.Schema, realTypes *[]s
continue continue
} }
} else { } else {
// only parse case of when embedded field is TypeName
// cases of *TypeName and Interface are not handled, maybe useless for swagger spec
tag := ""
if field.Tag != nil {
stag := reflect.StructTag(strings.Trim(field.Tag.Value, "`"))
tag = stag.Get("json")
}
if tag != "" {
tagValues := strings.Split(tag, ",")
if tagValues[0] == "-" {
//if json tag is "-", omit
continue
} else {
//if json tag is "something", output: something #definition/pkgname.Type
m.Properties[tagValues[0]] = mp
continue
}
} else {
//if no json tag, expand all fields of the type here
nm := &swagger.Schema{}
for _, pkg := range astPkgs { for _, pkg := range astPkgs {
for _, fl := range pkg.Files { for _, fl := range pkg.Files {
for nameOfObj, obj := range fl.Scope.Objects { for nameOfObj, obj := range fl.Scope.Objects {
if obj.Name == fmt.Sprint(field.Type) { if obj.Name == fmt.Sprint(field.Type) {
parseObject(obj, nameOfObj, m, realTypes, astPkgs, pkg.Name) parseObject(obj, nameOfObj, nm, realTypes, astPkgs, pkg.Name)
} }
} }
} }
} }
for name, p := range nm.Properties {
m.Properties[name] = p
}
continue
}
} }
} }
} }