diff --git a/protocol/goai/goai.go b/protocol/goai/goai.go index aef00be0e..e25d6e296 100644 --- a/protocol/goai/goai.go +++ b/protocol/goai/goai.go @@ -82,8 +82,8 @@ const ( ) const ( - patternKeyForRequired = `required` - patternKeyForIn = `in:` + validationRuleKeyForRequired = `required` + validationRuleKeyForIn = `in:` ) var ( diff --git a/protocol/goai/goai_parameter_ref.go b/protocol/goai/goai_parameter_ref.go index 416ec7dcc..433956788 100644 --- a/protocol/goai/goai_parameter_ref.go +++ b/protocol/goai/goai_parameter_ref.go @@ -80,8 +80,9 @@ func (oai *OpenApiV3) newParameterRefWithStructMethod(field gstructs.Field, path } // Required check. - if parameter.Schema.Value != nil && parameter.Schema.Value.Pattern != "" { - if gset.NewStrSetFrom(gstr.Split(parameter.Schema.Value.Pattern, "|")).Contains(patternKeyForRequired) { + if parameter.Schema.Value != nil && parameter.Schema.Value.ValidationRules != "" { + validationRuleArray := gstr.Split(parameter.Schema.Value.ValidationRules, "|") + if gset.NewStrSetFrom(validationRuleArray).Contains(validationRuleKeyForRequired) { parameter.Required = true } } diff --git a/protocol/goai/goai_shema.go b/protocol/goai/goai_shema.go index 5f96628f7..fa9819f6c 100644 --- a/protocol/goai/goai_shema.go +++ b/protocol/goai/goai_shema.go @@ -60,6 +60,7 @@ type Schema struct { AdditionalProperties *SchemaRef `json:"additionalProperties,omitempty"` Discriminator *Discriminator `json:"discriminator,omitempty"` XExtensions XExtensions `json:"-"` + ValidationRules string `json:"-"` } func (s Schema) MarshalJSON() ([]byte, error) { @@ -183,9 +184,9 @@ func (oai *OpenApiV3) structToSchema(object interface{}) (*Schema, error) { } schema.Properties.Iterator(func(key string, ref SchemaRef) bool { - if ref.Value != nil && ref.Value.Pattern != "" { - validationRuleSet := gset.NewStrSetFrom(gstr.Split(ref.Value.Pattern, "|")) - if validationRuleSet.Contains(patternKeyForRequired) { + if ref.Value != nil && ref.Value.ValidationRules != "" { + validationRuleSet := gset.NewStrSetFrom(gstr.Split(ref.Value.ValidationRules, "|")) + if validationRuleSet.Contains(validationRuleKeyForRequired) { schema.Required = append(schema.Required, key) } } @@ -212,14 +213,14 @@ func (oai *OpenApiV3) tagMapToSchema(tagMap map[string]string, schema *Schema) e for _, tag := range gvalid.GetTags() { if validationTagValue, ok := tagMap[tag]; ok { _, validationRules, _ := gvalid.ParseTagValue(validationTagValue) - schema.Pattern = validationRules + schema.ValidationRules = validationRules // Enum checks. if len(schema.Enum) == 0 { for _, rule := range gstr.SplitAndTrim(validationRules, "|") { - if gstr.HasPrefix(rule, patternKeyForIn) { + if gstr.HasPrefix(rule, validationRuleKeyForIn) { var ( isAllEnumNumber = true - enumArray = gstr.SplitAndTrim(rule[len(patternKeyForIn):], ",") + enumArray = gstr.SplitAndTrim(rule[len(validationRuleKeyForIn):], ",") ) for _, enum := range enumArray { if !gstr.IsNumeric(enum) { diff --git a/protocol/goai/goai_xextensions.go b/protocol/goai/goai_xextensions.go index cc11ef6a6..1d2f2462e 100644 --- a/protocol/goai/goai_xextensions.go +++ b/protocol/goai/goai_xextensions.go @@ -11,7 +11,7 @@ import ( ) // XExtensions stores the `x-` custom extensions. -type XExtensions map[string]interface{} +type XExtensions map[string]string func (oai *OpenApiV3) tagMapToXExtensions(tagMap map[string]string, extensions XExtensions) { for k, v := range tagMap {