go-cyber/x/graph/wasm/interface.go

package wasm

import (
	"encoding/json"

	errorsmod "cosmossdk.io/errors"

	wasmvmtypes "github.com/CosmWasm/wasmvm/types"
	authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"

	pluginstypes "github.com/cybercongress/go-cyber/v7/plugins/types"
	bandwidthkeeper "github.com/cybercongress/go-cyber/v7/x/bandwidth/keeper"
	cyberbankkeeper "github.com/cybercongress/go-cyber/v7/x/cyberbank/keeper"

	sdk "github.com/cosmos/cosmos-sdk/types"

	"github.com/cybercongress/go-cyber/v7/x/graph/keeper"
)

type Messenger struct {
	gk *keeper.GraphKeeper
	ik *keeper.IndexKeeper
	ak *authkeeper.AccountKeeper
	bk *cyberbankkeeper.IndexedKeeper
	bm *bandwidthkeeper.BandwidthMeter
}

func NewMessenger(
	gk *keeper.GraphKeeper,
	ik *keeper.IndexKeeper,
	ak *authkeeper.AccountKeeper,
	bk *cyberbankkeeper.IndexedKeeper,
	bm *bandwidthkeeper.BandwidthMeter,
) *Messenger {
	return &Messenger{
		gk,
		ik,
		ak,
		bk,
		bm,
	}
}

func (m *Messenger) HandleMsg(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg pluginstypes.CyberMsg) ([]sdk.Event, [][]byte, error) {
	switch {
	case msg.Cyberlink != nil:
		if msg.Cyberlink.Neuron != contractAddr.String() {
			return nil, nil, wasmvmtypes.InvalidRequest{Err: "cyberlink wrong neuron"}
		}

		msgServer := keeper.NewMsgServerImpl(m.gk, m.ik, *m.ak, m.bk, m.bm)

		if err := msg.Cyberlink.ValidateBasic(); err != nil {
			return nil, nil, errorsmod.Wrap(err, "failed validating msg")
		}

		res, err := msgServer.Cyberlink(
			sdk.WrapSDKContext(ctx),
			msg.Cyberlink,
		)
		if err != nil {
			return nil, nil, errorsmod.Wrap(err, "cyberlink msg")
		}

		responseBytes, err := json.Marshal(*res)
		if err != nil {
			return nil, nil, errorsmod.Wrap(err, "failed to serialize cyberlink response")
		}

		resp := [][]byte{responseBytes}

		return nil, resp, nil
	default:
		return nil, nil, pluginstypes.ErrHandleMsg
	}
}

type Querier struct {
	*keeper.GraphKeeper
}

func NewWasmQuerier(keeper *keeper.GraphKeeper) *Querier {
	return &Querier{keeper}
}

func (querier *Querier) HandleQuery(ctx sdk.Context, query pluginstypes.CyberQuery) ([]byte, error) {
	switch {
	case query.GraphStats != nil:
		res, err := querier.GraphKeeper.GraphStats(ctx, query.GraphStats)
		if err != nil {
			return nil, errorsmod.Wrap(err, "failed to get graph stats")
		}

		responseBytes, err := json.Marshal(res)
		if err != nil {
			return nil, errorsmod.Wrap(err, "failed to serialize graph stats response")
		}
		return responseBytes, nil

	default:
		return nil, pluginstypes.ErrHandleQuery
	}
}

Synonyms

go-cyber/x/rank/wasm/interface.go
space-pussy/x/dmn/wasm/interface.go
space-pussy/x/grid/wasm/interface.go
space-pussy/x/bandwidth/wasm/interface.go
space-pussy/x/resources/wasm/interface.go
space-pussy/x/graph/wasm/interface.go
go-cyber/x/dmn/wasm/interface.go
go-cyber/x/resources/wasm/interface.go
go-cyber/x/bandwidth/wasm/interface.go
space-pussy/x/rank/wasm/interface.go
go-cyber/x/grid/wasm/interface.go

Neighbours