message.go 1018 B

1234567891011121314151617181920212223242526272829
  1. package golang
  2. // Embedded message validation.
  3. const messageTpl = `
  4. {{ $f := .Field }}{{ $r := .Rules }}
  5. {{ template "required" . }}
  6. {{ if .MessageRules.GetSkip }}
  7. // skipping validation for {{ $f.Name }}
  8. {{ else }}
  9. if all {
  10. switch v := interface{}({{ accessor . }}).(type) {
  11. case interface{ ValidateAll() error }:
  12. if err := v.ValidateAll(); err != nil {
  13. errors = append(errors, {{ errCause . "err" "embedded message failed validation" }})
  14. }
  15. case interface{ Validate() error }:
  16. {{- /* Support legacy validation for messages that were generated with a plugin version prior to existence of ValidateAll() */ -}}
  17. if err := v.Validate(); err != nil {
  18. errors = append(errors, {{ errCause . "err" "embedded message failed validation" }})
  19. }
  20. }
  21. } else if v, ok := interface{}({{ accessor . }}).(interface{ Validate() error }); ok {
  22. if err := v.Validate(); err != nil {
  23. return {{ errCause . "err" "embedded message failed validation" }}
  24. }
  25. }
  26. {{ end }}
  27. `