@@ -755,23 +755,32 @@ func (gen *modelGenerator) emitStructValidator(st *rdl.StructTypeDef, flattened
755
755
for _ , f := range flattened {
756
756
fname := capitalize (string (f .Name ))
757
757
ftype := string (f .Type )
758
- if ! f . Optional {
759
- bt := gen . registry . FindBaseType ( f . Type )
760
- switch bt {
761
- case rdl . BaseTypeString , rdl . BaseTypeSymbol :
758
+ bt := gen . registry . FindBaseType ( f . Type )
759
+ switch bt {
760
+ case rdl . BaseTypeString , rdl . BaseTypeSymbol :
761
+ if ! f . Optional {
762
762
gen .emit (fmt .Sprintf ("\t if self.%s == \" \" {\n " , fname ))
763
763
gen .emit (fmt .Sprintf ("\t \t return fmt.Errorf(\" %s.%s is missing but is a required field\" )\n " , st .Name , f .Name ))
764
- if FullValidation {
765
- if bt == rdl .BaseTypeString && fname != "String" {
766
- gen .emit (fmt .Sprintf ("\t } else {\n \t \t val := %sValidate(%sSchema(), %q, self.%s)\n \t \t if !val.Valid {\n \t \t \t return fmt.Errorf(\" %s.%s does not contain a valid %s (%%v)\" , val.Error)\n \t \t }\n " , rdlPrefix , capitalize (string (gen .schema .Name )), ftype , fname , st .Name , string (f .Name ), ftype ))
764
+ }
765
+ if FullValidation {
766
+ if bt == rdl .BaseTypeString && fname != "String" {
767
+ if ! f .Optional {
768
+ gen .emit ("\t } else {\n " )
769
+ } else {
770
+ gen .emit (fmt .Sprintf ("\t if self.%s != \" \" {\n " , fname ))
767
771
}
772
+ gen .emit (fmt .Sprintf ("\t \t val := %sValidate(%sSchema(), %q, self.%s)\n \t \t if !val.Valid {\n \t \t \t return fmt.Errorf(\" %s.%s does not contain a valid %s (%%v)\" , val.Error)\n \t \t }\n " , rdlPrefix , capitalize (string (gen .schema .Name )), ftype , fname , st .Name , string (f .Name ), ftype ))
768
773
}
769
- gen .emit ("\t }\n " )
770
- case rdl .BaseTypeTimestamp :
774
+ }
775
+ gen .emit ("\t }\n " )
776
+ case rdl .BaseTypeTimestamp :
777
+ if ! f .Optional {
771
778
gen .emit (fmt .Sprintf ("\t if self.%s.IsZero() {\n " , fname ))
772
779
gen .emit (fmt .Sprintf ("\t \t return fmt.Errorf(\" %s: Missing required field: %s\" )\n " , st .Name , f .Name ))
773
780
gen .emit ("\t }\n " )
774
- case rdl .BaseTypeArray , rdl .BaseTypeMap , rdl .BaseTypeStruct , rdl .BaseTypeUUID :
781
+ }
782
+ case rdl .BaseTypeArray , rdl .BaseTypeMap , rdl .BaseTypeStruct , rdl .BaseTypeUUID :
783
+ if ! f .Optional {
775
784
gen .emit (fmt .Sprintf ("\t if self.%s == nil {\n " , fname ))
776
785
gen .emit (fmt .Sprintf ("\t \t return fmt.Errorf(\" %s: Missing required field: %s\" )\n " , st .Name , f .Name ))
777
786
gen .emit ("\t }\n " )
0 commit comments