42 lines
1.0 KiB
Go
42 lines
1.0 KiB
Go
package baseapp
|
|
|
|
import (
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
)
|
|
|
|
// QueryRouter provides queryables for each query path.
|
|
type QueryRouter interface {
|
|
AddRoute(r string, h sdk.Querier) (rtr QueryRouter)
|
|
Route(path string) (h sdk.Querier)
|
|
}
|
|
|
|
type queryrouter struct {
|
|
routes map[string]sdk.Querier
|
|
}
|
|
|
|
// nolint
|
|
// NewRouter - create new router
|
|
// TODO either make Function unexported or make return type (router) Exported
|
|
func NewQueryRouter() *queryrouter {
|
|
return &queryrouter{
|
|
routes: map[string]sdk.Querier{},
|
|
}
|
|
}
|
|
|
|
// AddRoute - Adds an sdk.Querier to the route provided. Panics on duplicate
|
|
func (rtr *queryrouter) AddRoute(r string, q sdk.Querier) QueryRouter {
|
|
if !isAlphaNumeric(r) {
|
|
panic("route expressions can only contain alphanumeric characters")
|
|
}
|
|
if rtr.routes[r] != nil {
|
|
panic("route has already been initialized")
|
|
}
|
|
rtr.routes[r] = q
|
|
return rtr
|
|
}
|
|
|
|
// Returns the sdk.Querier for a certain route path
|
|
func (rtr *queryrouter) Route(path string) (h sdk.Querier) {
|
|
return rtr.routes[path]
|
|
}
|