1234567891011121314151617181920212223242526272829 |
- package golang
- // Embedded message validation.
- const messageTpl = `
- {{ $f := .Field }}{{ $r := .Rules }}
- {{ template "required" . }}
- {{ if .MessageRules.GetSkip }}
- // skipping validation for {{ $f.Name }}
- {{ else }}
- if all {
- switch v := interface{}({{ accessor . }}).(type) {
- case interface{ ValidateAll() error }:
- if err := v.ValidateAll(); err != nil {
- errors = append(errors, {{ errCause . "err" "embedded message failed validation" }})
- }
- case interface{ Validate() error }:
- {{- /* Support legacy validation for messages that were generated with a plugin version prior to existence of ValidateAll() */ -}}
- if err := v.Validate(); err != nil {
- errors = append(errors, {{ errCause . "err" "embedded message failed validation" }})
- }
- }
- } else if v, ok := interface{}({{ accessor . }}).(interface{ Validate() error }); ok {
- if err := v.Validate(); err != nil {
- return {{ errCause . "err" "embedded message failed validation" }}
- }
- }
- {{ end }}
- `
|