planetmint-go/x/der/keeper/msg_server_register_der.go
Jürgen Eckel 8b8331f79b
added store testcases to the der module
Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com>
2025-05-21 15:30:21 +02:00

47 lines
1.3 KiB
Go

package keeper
import (
"context"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/planetmint/planetmint-go/util"
"github.com/planetmint/planetmint-go/x/der/types"
machinesTypes "github.com/planetmint/planetmint-go/x/machine/types"
)
func (k msgServer) RegisterDER(goCtx context.Context, msg *types.MsgRegisterDER) (*types.MsgRegisterDERResponse, error) {
ctx := sdk.UnwrapSDKContext(goCtx)
k.StoreDerAsset(ctx, *msg.Der)
// Get machine params from MachineKeeper
params := k.MachineKeeper.GetParams(ctx)
// Process NFT issuance if validator is block proposer
if util.IsValidatorBlockProposer(ctx, k.rootDir) {
k.handleDERNFTIssuance(goCtx, msg.Der, params)
} else {
util.GetAppLogger().Info(ctx, "Not block proposer: skipping DER NFT issuance")
}
return &types.MsgRegisterDERResponse{}, nil
}
func (k msgServer) handleDERNFTIssuance(goCtx context.Context, der *types.DER, params machinesTypes.Params) {
ctx := sdk.UnwrapSDKContext(goCtx)
logger := util.GetAppLogger()
logger.Info(ctx, "Issuing DER NFT: "+der.String())
err := util.IssueDerNFT(goCtx, der,
params.AssetRegistryScheme,
params.AssetRegistryDomain,
params.AssetRegistryPath,
)
if err != nil {
logger.Error(ctx, err, "DER NFT issuance failed")
} else {
logger.Info(ctx, "DER NFT issuance successful: "+der.ZigbeeID)
}
}