verification/pkg/validate_controllers/controller.go

47 lines
1.0 KiB
Go
Raw Permalink Normal View History

package validate_controllers
2023-06-12 14:19:10 +00:00
import (
"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
}
// validateStruct - возвращает строку с ошибкой, если структура не прошла валидацию.
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
}