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  }