MCPcopy
hub / github.com/apache/answer / Check

Method Check

internal/base/validator/validator.go:190–257  ·  view source on GitHub ↗

Check /

(value any)

Source from the content-addressed store, hash-verified

188
189// Check /
190func (m *MyValidator) Check(value any) (errFields []*FormErrorField, err error) {
191 defer func() {
192 if len(errFields) == 0 {
193 return
194 }
195 for _, field := range errFields {
196 if len(field.ErrorField) == 0 {
197 continue
198 }
199 firstRune := []rune(field.ErrorMsg)[0]
200 if !unicode.IsLetter(firstRune) || !unicode.Is(unicode.Latin, firstRune) {
201 continue
202 }
203 upperFirstRune := unicode.ToUpper(firstRune)
204 field.ErrorMsg = string(upperFirstRune) + field.ErrorMsg[1:]
205 if !strings.HasSuffix(field.ErrorMsg, ".") {
206 field.ErrorMsg += "."
207 }
208 }
209 }()
210 err = m.Validate.Struct(value)
211 if err != nil {
212 var valErrors validator.ValidationErrors
213 if !errors.As(err, &valErrors) {
214 log.Error(err)
215 return nil, errors.New("validate check exception")
216 }
217
218 for _, fieldError := range valErrors {
219 errField := &FormErrorField{
220 ErrorField: fieldError.Field(),
221 ErrorMsg: fieldError.Translate(m.Tran),
222 }
223
224 // get original tag name from value for set err field key.
225 structNamespace := fieldError.StructNamespace()
226 _, fieldName, found := strings.Cut(structNamespace, ".")
227 if found {
228 originalTag := getObjectTagByFieldName(value, fieldName)
229 if len(originalTag) > 0 {
230 errField.ErrorField = originalTag
231 }
232 }
233 errFields = append(errFields, errField)
234 }
235 if len(errFields) > 0 {
236 errMsg := ""
237 if len(errFields) == 1 {
238 errMsg = errFields[0].ErrorMsg
239 }
240 return errFields, myErrors.BadRequest(reason.RequestFormatError).WithMsg(errMsg)
241 }
242 }
243
244 if v, ok := value.(Checker); ok {
245 errFields, err = v.Check()
246 if err == nil {
247 return nil, nil

Callers

nothing calls this directly

Calls 4

TrFunction · 0.92
getObjectTagByFieldNameFunction · 0.85
CheckMethod · 0.65
TranslateMethod · 0.45

Tested by

no test coverage detected