@@ -982,28 +982,24 @@ func validArrayItem[T any](ty string, data any) ([]T, error) {
982982
983983func (attribute * Attribute ) validArray (ctx context.Context , val interface {}, key string ) errors.RawErrorInfo {
984984 rid := util .ExtractRequestUserFromContext (ctx )
985-
985+ errorInfo := errors.RawErrorInfo {
986+ ErrCode : common .CCErrCommParamsInvalid ,
987+ Args : []interface {}{key },
988+ }
986989 if val == nil {
987990 if attribute .IsRequired {
988991 blog .Error ("params can not be null, array field key: %s, rid: %s" , key , rid )
989- return errors.RawErrorInfo {
990- ErrCode : common .CCErrCommParamsNeedSet ,
991- Args : []interface {}{key },
992- }
992+ errorInfo .ErrCode = common .CCErrCommParamsNeedSet
993+ return errorInfo
993994 }
994995 return errors.RawErrorInfo {}
995996 }
996997 arrayOpt , err := ParseArrayOption (attribute .Option )
997998 if err != nil {
998- return errors.RawErrorInfo {
999- ErrCode : common .CCErrCommParamsIsInvalid ,
1000- Args : []interface {}{err },
1001- }
1002- }
1003- errorInfo := errors.RawErrorInfo {
1004- ErrCode : common .CCErrCommParamsInvalid ,
1005- Args : nil ,
999+ errorInfo .Args = []interface {}{err }
1000+ return errorInfo
10061001 }
1002+
10071003 itemType , _ := common .IsFieldTypeArray (attribute .PropertyType )
10081004 switch itemType {
10091005 case common .FieldTypeBool , common .FieldTypeTime , common .FieldTypeDate :
@@ -1013,37 +1009,7 @@ func (attribute *Attribute) validArray(ctx context.Context, val interface{}, key
10131009 return errorInfo
10141010 }
10151011 case common .FieldTypeSingleChar :
1016- value , err := validArrayItem [string ](itemType , val )
1017- if err != nil {
1018- blog .Errorf ("array params %s not valid,value: %v, option:%#v,err:%v,rid: %s" , key , val , attribute .Option , err , rid )
1019- errorInfo .Args = []any {attribute .Option , err }
1020- return errorInfo
1021- }
1022- strReg , err := regexp .Compile (arrayOpt .CharOption )
1023- if err != nil {
1024- blog .Errorf (`regexp "%s" invalid, err: %v, rid: %s` , arrayOpt , err , rid )
1025- return errors.RawErrorInfo {
1026- ErrCode : common .CCErrCommParamsIsInvalid ,
1027- Args : []interface {}{arrayOpt },
1028- }
1029- }
1030- for _ , v := range value {
1031- if len (v ) > common .FieldTypeSingleLenChar {
1032- blog .Errorf ("params over length %d, rid: %s" , common .FieldTypeSingleLenChar , rid )
1033- return errors.RawErrorInfo {
1034- ErrCode : common .CCErrCommOverLimit ,
1035- Args : []interface {}{key },
1036- }
1037- }
1038- if ! strReg .MatchString (v ) {
1039- blog .Errorf (`params "%s" not match regexp "%s", rid: %s` , val , arrayOpt , rid )
1040- return errors.RawErrorInfo {
1041- ErrCode : common .CCErrFieldRegValidFailed ,
1042- Args : []interface {}{key },
1043- }
1044- }
1045- }
1046-
1012+ return attribute .validArrayString (itemType , val , key , rid , arrayOpt )
10471013 case common .FieldTypeInt :
10481014 result , err := validArrayItem [int64 ](itemType , val )
10491015 if err != nil {
@@ -1061,7 +1027,8 @@ func (attribute *Attribute) validArray(ctx context.Context, val interface{}, key
10611027 case common .FieldTypeFloat :
10621028 result , err := validArrayItem [float64 ](itemType , val )
10631029 if err != nil {
1064- blog .Errorf ("array params %s not valid,value:%v,option:%#v,err:%v, rid: %s" , key , val , arrayOpt .FloatOption , err , rid )
1030+ blog .Errorf ("array params %s not valid,value:%v,option:%#v,err:%v, rid: %s" , key , val ,
1031+ arrayOpt .FloatOption , err , rid )
10651032 errorInfo .Args = []any {arrayOpt .FloatOption , err }
10661033 return errorInfo
10671034 }
@@ -1080,6 +1047,40 @@ func (attribute *Attribute) validArray(ctx context.Context, val interface{}, key
10801047 return errors.RawErrorInfo {}
10811048}
10821049
1050+ func (attribute * Attribute ) validArrayString (itemType string , val interface {}, key string ,
1051+ rid string , arrayOpt ArrayOption ) errors.RawErrorInfo {
1052+
1053+ errorInfo := errors.RawErrorInfo {
1054+ ErrCode : common .CCErrCommParamsInvalid ,
1055+ Args : []interface {}{key },
1056+ }
1057+ value , err := validArrayItem [string ](itemType , val )
1058+ if err != nil {
1059+ blog .Errorf ("array params %s not valid,value: %v, option:%#v,err:%v,rid: %s" , key , val , attribute .Option , err , rid )
1060+ errorInfo .Args = []any {attribute .Option , err }
1061+ return errorInfo
1062+ }
1063+ strReg , err := regexp .Compile (arrayOpt .CharOption )
1064+ if err != nil {
1065+ blog .Errorf (`regexp "%s" invalid, err: %v, rid: %s` , arrayOpt , err , rid )
1066+ errorInfo .Args = []interface {}{arrayOpt }
1067+ return errorInfo
1068+ }
1069+ for _ , v := range value {
1070+ if len (v ) > common .FieldTypeSingleLenChar {
1071+ blog .Errorf ("params over length %d, rid: %s" , common .FieldTypeSingleLenChar , rid )
1072+ errorInfo .ErrCode = common .CCErrCommOverLimit
1073+ return errorInfo
1074+ }
1075+ if ! strReg .MatchString (v ) {
1076+ blog .Errorf (`params "%s" not match regexp "%s", rid: %s` , val , arrayOpt , rid )
1077+ errorInfo .ErrCode = common .CCErrFieldRegValidFailed
1078+ return errorInfo
1079+ }
1080+ }
1081+ return errors.RawErrorInfo {}
1082+ }
1083+
10831084// validOrganization valid object attribute that is organization type
10841085func (attribute * Attribute ) validOrganization (ctx context.Context , val interface {}, key string ) errors.RawErrorInfo {
10851086 rid := util .ExtractRequestIDFromContext (ctx )
0 commit comments