planetmint-go/x/der/keeper/msg_server_register_der.go
Jürgen Eckel 03211743fc
Inspellning registration support (#499)
* added DER module
* scaffold type --module der DER zigbeeID dirigeraID dirigeraMAC plmntAddress liquidAddress
* ./ignite scaffold message registerDER der:DER --module der
* changed URL
* storing DER
* added query
* added liquid der asset type
* added der asset notarization logic
* added nft notarization for DER
* added nft query
* added query and fixed linter aspects
* added store testcases to the der module
* added test cases adjusted to the linter requirements
* addd ignite generate code changes
* added metadata json instead of specific data

Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com>
2025-05-26 15:52:33 +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)
}
}