diff --git a/x/der/keeper/der_asset.go b/x/der/keeper/der_asset.go new file mode 100644 index 0000000..51933b6 --- /dev/null +++ b/x/der/keeper/der_asset.go @@ -0,0 +1,28 @@ +package keeper + +import ( + "github.com/planetmint/planetmint-go/util" + "github.com/planetmint/planetmint-go/x/der/types" + + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +func (k Keeper) StoreDerAttest(ctx sdk.Context, asset types.DER) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DerAssetKey)) + appendValue := k.cdc.MustMarshal(&asset) + store.Set(util.SerializeString(asset.ZigbeeID), appendValue) +} + +func (k Keeper) LookupLiquidAsset(ctx sdk.Context, zigbeeID string) (val types.DER, found bool) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.DerAssetKey)) + derAsset := store.Get(util.SerializeString(zigbeeID)) + + if derAsset == nil { + return val, false + } + if err := k.cdc.Unmarshal(derAsset, &val); err != nil { + return val, false + } + return val, true +} diff --git a/x/der/keeper/msg_server_register_der.go b/x/der/keeper/msg_server_register_der.go index ac74bdd..a77105d 100644 --- a/x/der/keeper/msg_server_register_der.go +++ b/x/der/keeper/msg_server_register_der.go @@ -10,8 +10,9 @@ import ( func (k msgServer) RegisterDER(goCtx context.Context, msg *types.MsgRegisterDER) (*types.MsgRegisterDERResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - // TODO: Handling the message - _ = ctx + k.StoreDerAttest(ctx, *msg.Der) + + //TODO: init NFT creation and storag of NFT to DER associations return &types.MsgRegisterDERResponse{}, nil } diff --git a/x/der/types/keys.go b/x/der/types/keys.go index 34fc5ed..c258d8c 100644 --- a/x/der/types/keys.go +++ b/x/der/types/keys.go @@ -12,6 +12,8 @@ const ( // MemStoreKey defines the in-memory store key MemStoreKey = "mem_der" + + DerAssetKey = "Der/DerAsset/" ) func KeyPrefix(p string) []byte {