-
Notifications
You must be signed in to change notification settings - Fork 47
/
model.go
42 lines (36 loc) · 1.07 KB
/
model.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
package msgfee
import (
"github.com/iov-one/weave/errors"
"github.com/iov-one/weave/migration"
"github.com/iov-one/weave/orm"
)
func init() {
migration.MustRegister(1, &MsgFee{}, migration.NoModification)
}
var _ orm.CloneableData = (*MsgFee)(nil)
func (mf *MsgFee) Validate() error {
var errs error
errs = errors.AppendField(errs, "Metadata", mf.Metadata.Validate())
if mf.MsgPath == "" {
errs = errors.Append(errs, errors.Field("MsgPath", errors.ErrModel, "required"))
}
if mf.Fee.IsZero() {
errs = errors.AppendField(errs, "Fee", errors.ErrModel)
} else {
errs = errors.AppendField(errs, "Fee", mf.Fee.Validate())
}
return errs
}
func (mf *MsgFee) Copy() orm.CloneableData {
return &MsgFee{
Metadata: mf.Metadata.Copy(),
MsgPath: mf.MsgPath,
Fee: *mf.Fee.Clone(),
}
}
// NewMsgFeeBucket returns a bucket for keeping track of fees for each message
// type. Message fees are indexed by the corresponding message path.
func NewMsgFeeBucket() orm.ModelBucket {
b := orm.NewModelBucket("msgfee", &MsgFee{})
return migration.NewModelBucket("msgfee", b)
}