diff --git a/validator/generator.go b/validator/generator.go index 31d5b60..d8ac5d0 100644 --- a/validator/generator.go +++ b/validator/generator.go @@ -34,6 +34,8 @@ import ( var Version string +var ValidMethodName string = "IsValid" + type generator struct { config *config.Config request *plugin.Request @@ -67,9 +69,22 @@ func newGenerator(req *plugin.Request) (*generator, error) { } g.utils = golang.NewCodeUtils(lf) g.utils.HandleOptions(req.GeneratorParameters) + if parseExtend(req.PluginParameters) { + ValidMethodName = "IsStructValid" + } + return g, nil } +func parseExtend(params []string) bool { + for _, parameter := range params { + if strings.HasPrefix(parameter, "avoid_name") { + return true + } + } + return false +} + func (g *generator) write(str string) { g.buffer.WriteString(str) } @@ -198,7 +213,7 @@ func (g *generator) generateBody(ast *tp.Thrift, resolver *golang.Resolver) erro if err != nil { return err } - g.writeLinef("func (p *%s) IsValid() error {\n", st.GoName().String()) + g.writeLinef("func (p *%s) "+ValidMethodName+"() error {\n", st.GoName().String()) g.indent() for _, vc := range vcs { switch vc.ValidationType { @@ -282,7 +297,7 @@ func (g *generator) generateStructLikeFieldValidation(vc *ValidateContext) error } } if !skip { - g.writeLinef("if err := %s.IsValid(); err != nil {\n", vc.Target) + g.writeLinef("if err := %s."+ValidMethodName+"(); err != nil {\n", vc.Target) g.indent() g.writeLinef("return fmt.Errorf(\"field %s not valid, %%w\", err)", vc.FieldName) g.unindent() diff --git a/validator/validator_tpl.go b/validator/validator_tpl.go index 9a2ac1f..f84d403 100644 --- a/validator/validator_tpl.go +++ b/validator/validator_tpl.go @@ -18,7 +18,7 @@ package validator var StructLikeValidate = ` {{define "StructLikeValidate"}} {{- $TypeName := .Name | Identify}} -func (p *{{$TypeName}}) IsValid() bool { +func (p *{{$TypeName}}) ` + ValidMethodName + `() bool { {{- ctxs := MkValidateContexts .Fields}} {{- range .ctxs}} {{template "FieldValidate" .}} @@ -49,7 +49,7 @@ var FieldValidateStructLike = ` {{- else if eq . Annotation $StructLikeAnnotation.NotNil}} {{- end}} - if !{{.Target}}.IsValid({{.Source}}) { + if !{{.Target}}.` + ValidMethodName + `({{.Source}}) { return false } {{- end}}{{/* "FieldValidateStructLike" */}} diff --git a/version.go b/version.go index 876516c..6a336b3 100644 --- a/version.go +++ b/version.go @@ -21,5 +21,5 @@ func init() { } const ( - Version = "v0.2.2" + Version = "v0.2.3" )