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 }