space-pussy/x/grid/keeper/querier.go

package keeper

import (
	"github.com/cosmos/cosmos-sdk/client"
	"github.com/cosmos/cosmos-sdk/codec"
	sdk "github.com/cosmos/cosmos-sdk/types"
	sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
	abci "github.com/tendermint/tendermint/abci/types"

	"github.com/joinresistance/space-pussy/x/grid/types"
)

func NewQuerier(k Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier {
	return func(ctx sdk.Context, path []string, req abci.RequestQuery) ([]byte, error) {
		switch path[0] {
		case types.QueryParams:
			return queryParams(ctx, k, legacyQuerierCdc)
		case types.QuerySourceRoutes:
			return querySourceRoutes(ctx, req, k, legacyQuerierCdc)
		case types.QueryDestinationRoutes:
			return queryDestinationRoutes(ctx, req, k, legacyQuerierCdc)
		case types.QueryDestinationRoutedEnergy:
			return queryDestinationRoutedEnergy(ctx, req, k, legacyQuerierCdc)
		case types.QuerySourceRoutedEnergy:
			return querySourceRoutedEnergy(ctx, req, k, legacyQuerierCdc)
		case types.QueryRoute:
			return queryRoute(ctx, req, k, legacyQuerierCdc)
		case types.QueryRoutes:
			return queryRoutes(ctx, req, k, legacyQuerierCdc)
		default:
			return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, "unknown grid query endpoint")
		}
	}
}

func queryParams(ctx sdk.Context, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) {
	params := k.GetParams(ctx)

	res, err := codec.MarshalJSONIndent(legacyQuerierCdc, params)
	if err != nil {
		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error())
	}

	return res, nil
}

func querySourceRoutes(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) {
	var params types.QuerySourceParams

	err := legacyQuerierCdc.UnmarshalJSON(req.Data, &params)
	if err != nil {
		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error())
	}

	routes := k.GetSourceRoutes(ctx, params.Source, 16)

	res, err := codec.MarshalJSONIndent(legacyQuerierCdc, routes)
	if err != nil {
		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error())
	}

	return res, nil
}

// queryDestinationRoutes TODO add pagination
func queryDestinationRoutes(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) {
	var params types.QueryDestinationParams

	err := legacyQuerierCdc.UnmarshalJSON(req.Data, &params)
	if err != nil {
		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error())
	}

	routes := k.GetDestinationRoutes(ctx, params.Destination)

	res, err := codec.MarshalJSONIndent(legacyQuerierCdc, routes)
	if err != nil {
		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error())
	}

	return res, nil
}

func queryDestinationRoutedEnergy(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) {
	var params types.QueryDestinationParams

	err := legacyQuerierCdc.UnmarshalJSON(req.Data, &params)
	if err != nil {
		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error())
	}

	routedEnergy := k.GetRoutedToEnergy(ctx, params.Destination)

	res, err := codec.MarshalJSONIndent(legacyQuerierCdc, routedEnergy)
	if err != nil {
		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error())
	}

	return res, nil
}

func querySourceRoutedEnergy(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) {
	var params types.QuerySourceParams

	err := legacyQuerierCdc.UnmarshalJSON(req.Data, &params)
	if err != nil {
		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error())
	}

	routedEnergy := k.GetRoutedFromEnergy(ctx, params.Source)

	res, err := codec.MarshalJSONIndent(legacyQuerierCdc, routedEnergy)
	if err != nil {
		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error())
	}

	return res, nil
}

func queryRoute(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) {
	var params types.QueryRouteParams

	err := legacyQuerierCdc.UnmarshalJSON(req.Data, &params)
	if err != nil {
		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error())
	}

	route, found := k.GetRoute(ctx, params.Source, params.Destination)
	if !found {
		return nil, types.ErrRouteNotExist
	}

	res, err := codec.MarshalJSONIndent(legacyQuerierCdc, route)
	if err != nil {
		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error())
	}

	return res, nil
}

func queryRoutes(ctx sdk.Context, req abci.RequestQuery, k Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) {
	var params types.QueryRoutesParams

	err := legacyQuerierCdc.UnmarshalJSON(req.Data, &params)
	if err != nil {
		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error())
	}

	routes := k.GetAllRoutes(ctx)

	start, end := client.Paginate(len(routes), params.Page, params.Limit, 100)
	if start < 0 || end < 0 {
		routes = []types.Route{}
	} else {
		routes = routes[start:end]
	}

	res, err := codec.MarshalJSONIndent(legacyQuerierCdc, routes)
	if err != nil {
		return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error())
	}

	return res, nil
}

Synonyms

go-cyber/x/graph/types/querier.go
go-cyber/x/rank/types/querier.go
space-pussy/x/rank/keeper/querier.go
space-pussy/x/dmn/types/querier.go
space-pussy/x/resources/types/querier.go
go-cyber/x/dmn/types/querier.go
space-pussy/x/dmn/keeper/querier.go
space-pussy/x/graph/types/querier.go
space-pussy/x/bandwidth/keeper/querier.go
space-pussy/x/rank/types/querier.go
space-pussy/x/graph/keeper/querier.go
go-cyber/x/clock/keeper/querier.go
space-pussy/x/grid/types/querier.go
space-pussy/x/bandwidth/types/querier.go
go-cyber/x/liquidity/types/querier.go
space-pussy/x/resources/keeper/querier.go

Neighbours