-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathint64.go
129 lines (115 loc) · 2.73 KB
/
int64.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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package validator
import (
"errors"
"fmt"
)
type int64Validator struct {
field string
value int64
handlers []func(int64) error
errStr string
force bool
}
func (validator *int64Validator) push(f func(int64) error) {
validator.handlers = append(validator.handlers, f)
}
func (validator *int64Validator) Require() *int64Validator {
validator.force = true
validator.push(func(i int64) error {
if i == 0 {
return errors.New(validator.field + "不能为空")
}
return nil
})
return validator
}
func (validator *int64Validator) Between(min, max int64) *int64Validator {
validator.push(func(i int64) error {
if i <= max && i >= min {
return nil
}
return fmt.Errorf(validator.field+"必须在%d到%d之间", min, max)
})
return validator
}
func (validator *int64Validator) In(arr ...int64) *int64Validator {
validator.push(func(i int64) error {
for _, v := range arr {
if v == i {
return nil
}
}
return errors.New(validator.field + "必须在" + int64sJoin(arr, ",") + "之中")
})
return validator
}
func (validator *int64Validator) NotIn(arr ...int64) *int64Validator {
validator.push(func(i int64) error {
for _, v := range arr {
if v == i {
return errors.New(validator.field + "不能在" + int64sJoin(arr, ",") + "之中")
}
}
return nil
})
return validator
}
func (validator *int64Validator) Gt(min int64) *int64Validator {
validator.push(func(i int64) error {
if i > min {
return nil
}
return fmt.Errorf(validator.field+"必须大于%d", min)
})
return validator
}
func (validator *int64Validator) Lt(max int64) *int64Validator {
validator.push(func(i int64) error {
if i < max {
return nil
}
return fmt.Errorf(validator.field+"必须小于%d", max)
})
return validator
}
func (validator *int64Validator) Gte(min int64) *int64Validator {
validator.push(func(i int64) error {
if i < min {
return fmt.Errorf(validator.field+"不能小于%d", min)
}
return nil
})
return validator
}
func (validator *int64Validator) Lte(max int64) *int64Validator {
validator.push(func(i int64) error {
if i > max {
return fmt.Errorf(validator.field+"不能大于%d", max)
}
return nil
})
return validator
}
func (validator *int64Validator) AddRule(f func(int64) error) *int64Validator {
validator.push(f)
return validator
}
func (validator *int64Validator) Exec() (err error) {
if !validator.force && validator.value == 0 {
return nil
}
for i := 0; i < len(validator.handlers); i++ {
err = validator.handlers[i](validator.value)
if err != nil {
if validator.errStr == "" {
return
}
return errors.New(validator.errStr)
}
}
return nil
}
func (validator *int64Validator) Err(s string) *int64Validator {
validator.errStr = s
return validator
}