2024-05-26 15:32:07 +00:00
|
|
|
|
package validate_controllers
|
2023-06-12 14:19:10 +00:00
|
|
|
|
|
|
|
|
|
import (
|
2023-09-15 00:39:38 +00:00
|
|
|
|
"reflect"
|
|
|
|
|
|
2023-06-12 14:19:10 +00:00
|
|
|
|
"github.com/go-playground/validator/v10"
|
|
|
|
|
"github.com/gofiber/fiber/v2"
|
2024-11-21 07:29:18 +00:00
|
|
|
|
"gitea.pena/PenaSide/verification/internal/models"
|
2023-06-12 14:19:10 +00:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var validate = validator.New()
|
|
|
|
|
|
|
|
|
|
type Route struct {
|
|
|
|
|
Method string
|
|
|
|
|
Path string
|
|
|
|
|
Name string
|
|
|
|
|
Handler fiber.Handler
|
|
|
|
|
}
|
|
|
|
|
|
2023-09-15 00:39:38 +00:00
|
|
|
|
// validateStruct - возвращает строку с ошибкой, если структура не прошла валидацию.
|
2024-05-26 15:32:07 +00:00
|
|
|
|
func ValidateStruct(s any) []*models.RespErrorValidate {
|
2023-06-12 14:19:10 +00:00
|
|
|
|
err := validate.Struct(s)
|
|
|
|
|
|
|
|
|
|
var errorsValidate []*models.RespErrorValidate
|
|
|
|
|
if err != nil {
|
|
|
|
|
for _, err := range err.(validator.ValidationErrors) {
|
|
|
|
|
field := err.Field()
|
|
|
|
|
|
|
|
|
|
r, _ := reflect.TypeOf(s).Elem().FieldByName(err.Field())
|
|
|
|
|
if queryTag := r.Tag.Get("query"); queryTag != "" {
|
|
|
|
|
field = queryTag
|
|
|
|
|
}
|
|
|
|
|
if jsonTag := r.Tag.Get("json"); jsonTag != "" {
|
|
|
|
|
field = jsonTag
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
errorsValidate = append(errorsValidate, &models.RespErrorValidate{
|
|
|
|
|
Field: field,
|
|
|
|
|
Tag: err.Tag(),
|
|
|
|
|
Value: err.Param(),
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return errorsValidate
|
|
|
|
|
}
|