/
validate.go
53 lines (41 loc) · 995 Bytes
/
validate.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package validate
import (
"github.com/simiancreative/simiango/service"
"gopkg.in/validator.v2"
)
func Valid(v interface{}, tags string) error {
return validator.Valid(v, tags)
}
func Validate(v interface{}) Validator {
errs := validator.Validate(v)
return Validator{Errs: errs}
}
func AddValidation(name string, f validator.ValidationFunc) error {
return validator.SetValidationFunc(name, f)
}
type Validator struct {
Errs error
}
func (dv *Validator) HasErrors() bool {
return dv.Errs != nil
}
func (dv *Validator) Errors() error {
return dv.Errs
}
func (dv *Validator) ResultError() *service.ResultError {
if dv.Errs == nil {
return nil
}
reasons := []map[string]interface{}{}
for k, v := range dv.Errs.(validator.ErrorMap) {
reasons = append(reasons, map[string]interface{}{})
reasons[0][k] = v
}
message := "request_validation_failed"
return &service.ResultError{
Status: 422,
ErrMessage: message,
Message: message,
Reasons: reasons,
}
}