Skip to content

Commit e5a9e42

Browse files
committed
fix(#264): Added encounter delete
1 parent 9eceb53 commit e5a9e42

8 files changed

Lines changed: 666 additions & 203 deletions

File tree

docs/static/openapi.yml

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

proto/cardchain/cardchain/tx.proto

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,16 @@ service Msg {
7171
rpc EncounterEdit (MsgEncounterEdit) returns (MsgEncounterEditResponse);
7272
rpc EncounterDo (MsgEncounterDo) returns (MsgEncounterDoResponse);
7373
rpc EncounterClose (MsgEncounterClose) returns (MsgEncounterCloseResponse);
74+
rpc EncounterDelete (MsgEncounterDelete) returns (MsgEncounterDeleteResponse);
7475
rpc EarlyAccessDisinvite (MsgEarlyAccessDisinvite) returns (MsgEarlyAccessDisinviteResponse);
7576
rpc CardBan (MsgCardBan) returns (MsgCardBanResponse);
7677
rpc EarlyAccessGrant (MsgEarlyAccessGrant) returns (MsgEarlyAccessGrantResponse);
7778
rpc SetActivate (MsgSetActivate) returns (MsgSetActivateResponse);
7879
rpc CardCopyrightClaim (MsgCardCopyrightClaim) returns (MsgCardCopyrightClaimResponse);
7980

8081
// EncounterEdit defines the EncounterEdit RPC.
82+
83+
// EncounterDelete defines the EncounterDelete RPC.
8184
}
8285
// MsgUpdateParams is the Msg/UpdateParams request type.
8386
message MsgUpdateParams {
@@ -119,12 +122,12 @@ message MsgCardSchemeBuyResponse {
119122

120123
message MsgCardSaveContent {
121124
option (cosmos.msg.v1.signer) = "creator";
122-
string creator = 1;
123-
uint64 cardId = 2;
124-
bytes content = 3;
125-
string notes = 4;
126-
string artist = 5;
127-
bool balanceAnchor = 6;
125+
string creator = 1;
126+
uint64 cardId = 2;
127+
bytes content = 3;
128+
string notes = 4;
129+
string artist = 5;
130+
bool balanceAnchor = 6;
128131
repeated Parameter parameters = 7;
129132
}
130133

@@ -507,18 +510,17 @@ message MsgEncounterCreateResponse {}
507510
// MsgEncounterEdit defines the MsgEncounterEdit message.
508511
message MsgEncounterEdit {
509512
option (cosmos.msg.v1.signer) = "creator";
510-
string creator = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
511-
uint64 id = 2;
512-
string name = 3;
513-
repeated uint64 drawlist = 4;
513+
string creator = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
514+
uint64 id = 2;
515+
string name = 3;
516+
repeated uint64 drawlist = 4;
514517
repeated Parameter parameters = 5;
515-
bytes image = 6;
518+
bytes image = 6;
516519
}
517520

518521
// MsgEncounterEditResponse defines the MsgEncounterEditResponse message.
519522
message MsgEncounterEditResponse {}
520523

521-
522524
message MsgEncounterDo {
523525
option (cosmos.msg.v1.signer) = "creator";
524526
string creator = 1;
@@ -577,3 +579,14 @@ message MsgCardCopyrightClaim {
577579
}
578580

579581
message MsgCardCopyrightClaimResponse {}
582+
583+
// MsgEncounterDelete defines the MsgEncounterDelete message.
584+
message MsgEncounterDelete {
585+
option (cosmos.msg.v1.signer) = "creator";
586+
string creator = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
587+
uint64 id = 2;
588+
}
589+
590+
// MsgEncounterDeleteResponse defines the MsgEncounterDeleteResponse message.
591+
message MsgEncounterDeleteResponse {}
592+
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package keeper
2+
3+
import (
4+
"context"
5+
6+
errorsmod "cosmossdk.io/errors"
7+
"github.com/DecentralCardGame/cardchain/x/cardchain/types"
8+
sdk "github.com/cosmos/cosmos-sdk/types"
9+
"github.com/cosmos/cosmos-sdk/types/errors"
10+
)
11+
12+
func (k msgServer) EncounterDelete(goCtx context.Context, msg *types.MsgEncounterDelete) (*types.MsgEncounterDeleteResponse, error) {
13+
ctx := sdk.UnwrapSDKContext(goCtx)
14+
15+
if _, err := k.addressCodec.StringToBytes(msg.Creator); err != nil {
16+
return nil, errorsmod.Wrap(err, "invalid authority address")
17+
}
18+
19+
encounter := k.Encounterk.Get(ctx, msg.Id)
20+
21+
if encounter.Owner != msg.Creator {
22+
return nil, errorsmod.Wrap(errors.ErrUnauthorized, "incorrect owner")
23+
24+
}
25+
26+
k.Images.Set(ctx, encounter.ImageId, nil)
27+
k.Encounterk.Set(ctx, msg.Id, nil)
28+
29+
return &types.MsgEncounterDeleteResponse{}, nil
30+
}

x/cardchain/module/autocli.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,13 @@ func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions {
490490
PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "cardId"}},
491491
},
492492

493-
// this line is used by ignite scaffolding # autocli/tx
493+
{
494+
RpcMethod: "EncounterDelete",
495+
Use: "encounter-delete [id]",
496+
Short: "Send a EncounterDelete tx",
497+
PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "id"}},
498+
},
499+
// this line is used by ignite scaffolding # autocli/tx
494500
},
495501
},
496502
}

x/cardchain/module/simulation.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -825,6 +825,21 @@ func (am AppModule) WeightedOperations(simState module.SimulationState) []simtyp
825825
weightMsgEncounterEdit,
826826
cardchainsimulation.SimulateMsgEncounterEdit(am.accountKeeper, am.bankKeeper, am.keeper),
827827
))
828+
const (
829+
opWeightMsgEncounterDelete = "op_weight_msg_cardchain"
830+
defaultWeightMsgEncounterDelete int = 100
831+
)
832+
833+
var weightMsgEncounterDelete int
834+
simState.AppParams.GetOrGenerate(opWeightMsgEncounterDelete, &weightMsgEncounterDelete, nil,
835+
func(_ *rand.Rand) {
836+
weightMsgEncounterDelete = defaultWeightMsgEncounterDelete
837+
},
838+
)
839+
operations = append(operations, simulation.NewWeightedOperation(
840+
weightMsgEncounterDelete,
841+
cardchainsimulation.SimulateMsgEncounterDelete(am.accountKeeper, am.bankKeeper, am.keeper),
842+
))
828843

829844
// this line is used by starport scaffolding # simapp/module/operation
830845

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package simulation
2+
3+
import (
4+
"math/rand"
5+
6+
"github.com/cosmos/cosmos-sdk/baseapp"
7+
sdk "github.com/cosmos/cosmos-sdk/types"
8+
simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
9+
10+
"github.com/DecentralCardGame/cardchain/x/cardchain/keeper"
11+
"github.com/DecentralCardGame/cardchain/x/cardchain/types"
12+
)
13+
14+
func SimulateMsgEncounterDelete(
15+
ak types.AccountKeeper,
16+
bk types.BankKeeper,
17+
k keeper.Keeper,
18+
) simtypes.Operation {
19+
return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string,
20+
) (simtypes.OperationMsg, []simtypes.FutureOperation, error) {
21+
simAccount, _ := simtypes.RandomAcc(r, accs)
22+
msg := &types.MsgEncounterDelete{
23+
Creator: simAccount.Address.String(),
24+
}
25+
26+
// TODO: Handle the EncounterDelete simulation
27+
28+
return simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), "EncounterDelete simulation not implemented"), nil, nil
29+
}
30+
}

x/cardchain/types/codec.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ import (
88
)
99

1010
func RegisterInterfaces(registrar cdctypes.InterfaceRegistry) {
11+
registrar.RegisterImplementations((*sdk.Msg)(nil),
12+
&MsgEncounterDelete{},
13+
)
14+
1115
registrar.RegisterImplementations((*sdk.Msg)(nil),
1216
&MsgEncounterEdit{},
1317
)
@@ -170,4 +174,4 @@ func RegisterInterfaces(registrar cdctypes.InterfaceRegistry) {
170174
&MsgUpdateParams{},
171175
)
172176
msgservice.RegisterMsgServiceDesc(registrar, &_Msg_serviceDesc)
173-
}
177+
}

0 commit comments

Comments
 (0)