apskel-pos-backend/internal/utils/format_validator_error.go
2024-08-18 12:39:23 +07:00

39 lines
1.1 KiB
Go

package utils
import (
"fmt"
"github.com/go-playground/validator/v10"
"reflect"
)
func formatValidationError(err error) string {
if _, ok := err.(*validator.InvalidValidationError); ok {
return err.Error()
}
var errorMessage string
for _, err := range err.(validator.ValidationErrors) {
switch err.Tag() {
case "required":
errorMessage += fmt.Sprintf("The field '%s' is required.", err.Field())
case "min":
if err.Kind() == reflect.Slice {
errorMessage += fmt.Sprintf("The field '%s' must contain at least %s items.", err.Field(), err.Param())
} else {
errorMessage += fmt.Sprintf("The field '%s' must be at least %s.", err.Field(), err.Param())
}
case "oneof":
errorMessage += fmt.Sprintf("The field '%s' must be one of [%s].", err.Field(), err.Param())
case "email":
errorMessage += fmt.Sprintf("The field '%s' must be a valid email address.", err.Field())
case "len":
errorMessage += fmt.Sprintf("The field '%s' must be exactly %s characters long.", err.Field(), err.Param())
default:
errorMessage += fmt.Sprintf("The field '%s' is invalid.", err.Field())
}
errorMessage += " "
}
return errorMessage
}