-
Notifications
You must be signed in to change notification settings - Fork 115
/
validate.go
34 lines (28 loc) · 948 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
package utils
import "github.com/cosmos/cosmos-sdk/codec"
// ValidatedProtoMarshaler is a ProtoMarshaler that can also be validated
type ValidatedProtoMarshaler interface {
codec.ProtoMarshaler
ValidateBasic() error
}
type validatedProtoMarshaler struct {
codec.ProtoMarshaler
validate func() error
}
func (v validatedProtoMarshaler) ValidateBasic() error {
return v.validate()
}
// WithValidation adds a ValidateBasic function to an existing ProtoMarshaler
func WithValidation(value codec.ProtoMarshaler, validate func() error) ValidatedProtoMarshaler {
return validatedProtoMarshaler{
ProtoMarshaler: value,
validate: validate,
}
}
// NoValidation wraps a ProtoMarshaler so it can be used by the store without actually adding any validation
func NoValidation(value codec.ProtoMarshaler) ValidatedProtoMarshaler {
return validatedProtoMarshaler{
ProtoMarshaler: value,
validate: func() error { return nil },
}
}