github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/dex/module.go (about)

     1  package dex
     2  
     3  import (
     4  	"encoding/json"
     5  
     6  	"github.com/fibonacci-chain/fbc/x/dex/keeper"
     7  
     8  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec"
     9  	abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types"
    10  	"github.com/fibonacci-chain/fbc/x/dex/types"
    11  
    12  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/context"
    13  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
    14  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/module"
    15  	"github.com/gorilla/mux"
    16  	"github.com/spf13/cobra"
    17  
    18  	"github.com/fibonacci-chain/fbc/x/dex/client/cli"
    19  	"github.com/fibonacci-chain/fbc/x/dex/client/rest"
    20  )
    21  
    22  var (
    23  	_ module.AppModule      = AppModule{}
    24  	_ module.AppModuleBasic = AppModuleBasic{}
    25  )
    26  
    27  // AppModuleBasic represents a app module basics object
    28  type AppModuleBasic struct{}
    29  
    30  // Name returns module name
    31  func (AppModuleBasic) Name() string {
    32  	return ModuleName
    33  }
    34  
    35  // RegisterCodec registers module codec
    36  func (AppModuleBasic) RegisterCodec(cdc *codec.Codec) {
    37  	types.RegisterCodec(cdc)
    38  }
    39  
    40  // DefaultGenesis returns default genesis state
    41  func (AppModuleBasic) DefaultGenesis() json.RawMessage {
    42  	return types.ModuleCdc.MustMarshalJSON(DefaultGenesisState())
    43  }
    44  
    45  // ValidateGenesis validates genesis
    46  func (AppModuleBasic) ValidateGenesis(bz json.RawMessage) error {
    47  	var data GenesisState
    48  	err := types.ModuleCdc.UnmarshalJSON(bz, &data)
    49  	if err != nil {
    50  		return err
    51  	}
    52  	return ValidateGenesis(data)
    53  }
    54  
    55  // RegisterRESTRoutes registers rest routes
    56  func (AppModuleBasic) RegisterRESTRoutes(ctx context.CLIContext, rtr *mux.Router) {
    57  	rest.RegisterRoutes(ctx, rtr)
    58  }
    59  
    60  // GetTxCmd returns the root tx command of this module
    61  func (AppModuleBasic) GetTxCmd(cdc *codec.Codec) *cobra.Command {
    62  	return cli.GetTxCmd(cdc)
    63  }
    64  
    65  // GetQueryCmd returns the root query command of this module
    66  func (AppModuleBasic) GetQueryCmd(cdc *codec.Codec) *cobra.Command {
    67  	return cli.GetQueryCmd(types.QuerierRoute, cdc)
    68  }
    69  
    70  // AppModule represents app module
    71  type AppModule struct {
    72  	AppModuleBasic
    73  	keeper       IKeeper
    74  	supplyKeeper SupplyKeeper
    75  	version      ProtocolVersionType
    76  }
    77  
    78  // NewAppModule creates a new AppModule object
    79  func NewAppModule(version ProtocolVersionType, keeper IKeeper, supplyKeeper SupplyKeeper) AppModule {
    80  	return AppModule{
    81  		AppModuleBasic: AppModuleBasic{},
    82  		keeper:         keeper,
    83  		supplyKeeper:   supplyKeeper,
    84  		version:        version,
    85  	}
    86  }
    87  
    88  // RegisterInvariants registers invariants
    89  func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {
    90  	keeper.RegisterInvariants(ir, am.keeper, am.supplyKeeper)
    91  }
    92  
    93  // Route returns module message route name
    94  func (AppModule) Route() string {
    95  	return types.RouterKey
    96  }
    97  
    98  // NewHandler returns module handler
    99  func (am AppModule) NewHandler() sdk.Handler {
   100  	return NewHandler(am.keeper)
   101  }
   102  
   103  // QuerierRoute returns module querier route name
   104  func (AppModule) QuerierRoute() string {
   105  	return types.QuerierRoute
   106  }
   107  
   108  // NewQuerierHandler returns module querier
   109  func (am AppModule) NewQuerierHandler() sdk.Querier {
   110  	return NewQuerier(am.keeper)
   111  }
   112  
   113  // InitGenesis inits module genesis
   114  func (am AppModule) InitGenesis(ctx sdk.Context, data json.RawMessage) []abci.ValidatorUpdate {
   115  	var genesisState GenesisState
   116  	types.ModuleCdc.MustUnmarshalJSON(data, &genesisState)
   117  	InitGenesis(ctx, am.keeper, genesisState)
   118  	return []abci.ValidatorUpdate{}
   119  }
   120  
   121  // ExportGenesis exports module genesis
   122  func (am AppModule) ExportGenesis(ctx sdk.Context) json.RawMessage {
   123  	gs := ExportGenesis(ctx, am.keeper)
   124  	return types.ModuleCdc.MustMarshalJSON(gs)
   125  }
   126  
   127  // BeginBlock returns module begin-block
   128  func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) {
   129  }
   130  
   131  // EndBlock returns module end-block
   132  func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate {
   133  	EndBlocker(ctx, am.keeper)
   134  	return nil
   135  }