|
|
@@ -152,6 +152,7 @@ type SwaggerModel struct {
|
|
|
Items *SwaggerModel `yaml:"items,omitempty"`
|
|
|
Ref string `yaml:"ref,omitempty"`
|
|
|
Embedded bool `yaml:"embedded,omitempty"`
|
|
|
+ Required []string `yaml:"required,omitempty"`
|
|
|
}
|
|
|
|
|
|
func RangeSwaggerModel(node *SwaggerModel) []*SwaggerModel {
|
|
|
@@ -664,6 +665,7 @@ func buildFromStruct(declFile *ast.File, st *types.Struct, desc string) (error,
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
+ required := []string{}
|
|
|
properties := map[string]*SwaggerModel{}
|
|
|
for i := 0; i < st.NumFields(); i++ {
|
|
|
fld := st.Field(i)
|
|
|
@@ -716,6 +718,20 @@ func buildFromStruct(declFile *ast.File, st *types.Struct, desc string) (error,
|
|
|
if afld.Comment != nil {
|
|
|
commentText = afld.Comment.Text()
|
|
|
}
|
|
|
+
|
|
|
+ // if strings.Contains(commentText, "required") {
|
|
|
+ // required = append(required, name)
|
|
|
+ // }
|
|
|
+ if afld.Tag != nil {
|
|
|
+ tagstr := strings.Split(afld.Tag.Value, "v:")
|
|
|
+ if len(tagstr) > 1 {
|
|
|
+ if strings.Contains(tagstr[1], "required") {
|
|
|
+ required = append(required, name)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // debugLog("------------------------------%s", afld.Tag.Value)
|
|
|
+ }
|
|
|
+
|
|
|
err, ret := buildFromType(fld.Type(), declFile, commentText)
|
|
|
if err != nil {
|
|
|
return err, nil
|
|
|
@@ -739,6 +755,7 @@ func buildFromStruct(declFile *ast.File, st *types.Struct, desc string) (error,
|
|
|
return nil, &SwaggerModel{
|
|
|
Type: "object",
|
|
|
Properties: properties,
|
|
|
+ Required: required,
|
|
|
Description: desc,
|
|
|
}
|
|
|
}
|