github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/types/upgrade/upgrade.go (about) 1 package upgrade 2 3 import ( 4 "errors" 5 6 store "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/store/types" 7 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 8 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/params" 9 ) 10 11 type UpgradeModule interface { 12 RegisterTask() HeightTask 13 UpgradeHeight() int64 14 RegisterParam() params.ParamSet 15 ModuleName() string 16 CommitFilter() *store.StoreFilter 17 PruneFilter() *store.StoreFilter 18 VersionFilter() *store.VersionFilter 19 } 20 21 type HeightTasks []HeightTask 22 23 func (h HeightTasks) Len() int { 24 return len(h) 25 } 26 27 func (h HeightTasks) Less(i, j int) bool { 28 return h[i].GetOrderer() < h[j].GetOrderer() 29 } 30 31 func (h HeightTasks) Swap(i, j int) { 32 h[i], h[j] = h[j], h[i] 33 } 34 35 type HeightTask interface { 36 GetOrderer() int16 37 Execute(c sdk.Context) error 38 ValidateBasic() error 39 } 40 type heightTask struct { 41 orderer int16 42 taskExecutor func(ctx sdk.Context) error 43 } 44 45 var ( 46 _ HeightTask = (*heightTask)(nil) 47 ) 48 49 func NewHeightTask(orderer int16, taskExecutor func(ctx sdk.Context) error) HeightTask { 50 return &heightTask{orderer: orderer, taskExecutor: taskExecutor} 51 } 52 53 func (t *heightTask) GetOrderer() int16 { 54 return t.orderer 55 } 56 57 func (t *heightTask) ValidateBasic() error { 58 if t.taskExecutor == nil { 59 return errors.New("executor cant be nil") 60 } 61 62 return nil 63 } 64 65 func (t *heightTask) Execute(ctx sdk.Context) error { 66 return t.taskExecutor(ctx) 67 }