package controllers import ( "reflect" "github.com/go-playground/validator/v10" "github.com/gofiber/fiber/v2" "penahub.gitlab.yandexcloud.net/backend/verification/internal/models" ) var validate = validator.New() type Route struct { Method string Path string Name string Handler fiber.Handler } // validateStruct - возвращает строку с ошибкой, если структура не прошла валидацию. func validateStruct(s any) []*models.RespErrorValidate { 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 }