50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/go-playground/validator/v10"
|
|
)
|
|
|
|
func bindAndValidateWatch(watch *Watch, c *gin.Context) (map[string]string, error) {
|
|
err := c.ShouldBind(watch)
|
|
return validate(err), err
|
|
}
|
|
|
|
func bindAndValidateFilter(filter *Filter, c *gin.Context) (map[string]string, error) {
|
|
err := c.ShouldBind(filter)
|
|
return validate(err), err
|
|
}
|
|
|
|
func bindAndValidateGroupUpdate(group *FilterGroupUpdate, c *gin.Context) (map[string]string, error) {
|
|
err := c.ShouldBind(group)
|
|
return validate(err), err
|
|
}
|
|
|
|
func bindAndValidateFilterUpdate(filter *FilterUpdate, c *gin.Context) (map[string]string, error) {
|
|
err := c.ShouldBind(filter)
|
|
return validate(err), err
|
|
}
|
|
|
|
func prettyError(fieldError validator.FieldError) string {
|
|
switch fieldError.Tag() {
|
|
case "required":
|
|
return fieldError.Field() + " is required"
|
|
default:
|
|
return "No prettyError for " + fieldError.Tag()
|
|
}
|
|
}
|
|
|
|
func validate(err error) map[string]string {
|
|
out := make(map[string]string)
|
|
if err != nil {
|
|
var ve validator.ValidationErrors
|
|
if errors.As(err, &ve) {
|
|
for _, fe := range ve {
|
|
out[fe.Field()] = prettyError(fe)
|
|
}
|
|
}
|
|
}
|
|
return out
|
|
}
|