github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/baseapp/queryrouter.go (about)

     1  package baseapp
     2  
     3  import (
     4  	"fmt"
     5  
     6  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     7  )
     8  
     9  type QueryRouter struct {
    10  	routes map[string]sdk.Querier
    11  }
    12  
    13  var _ sdk.QueryRouter = NewQueryRouter()
    14  
    15  // NewQueryRouter returns a reference to a new QueryRouter.
    16  func NewQueryRouter() *QueryRouter {
    17  	return &QueryRouter{
    18  		routes: map[string]sdk.Querier{},
    19  	}
    20  }
    21  
    22  // AddRoute adds a query path to the router with a given Querier. It will panic
    23  // if a duplicate route is given. The route must be alphanumeric.
    24  func (qrt *QueryRouter) AddRoute(path string, q sdk.Querier) sdk.QueryRouter {
    25  	if !isAlphaNumeric(path) {
    26  		panic("route expressions can only contain alphanumeric characters")
    27  	}
    28  	if qrt.routes[path] != nil {
    29  		panic(fmt.Sprintf("route %s has already been initialized", path))
    30  	}
    31  
    32  	qrt.routes[path] = q
    33  	return qrt
    34  }
    35  
    36  // Route returns the Querier for a given query route path.
    37  func (qrt *QueryRouter) Route(path string) sdk.Querier {
    38  	return qrt.routes[path]
    39  }