Skip to content

Commit e6bf901

Browse files
committed
feat(#244): Implemented UpgradePicksReport
1 parent 9a43f9c commit e6bf901

2 files changed

Lines changed: 30 additions & 3 deletions

File tree

x/cardchain/keeper/msg_server_upgrade_picks_report.go

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,40 @@ import (
55

66
errorsmod "cosmossdk.io/errors"
77
"github.com/DecentralCardGame/cardchain/x/cardchain/types"
8+
sdk "github.com/cosmos/cosmos-sdk/types"
9+
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
810
)
911

12+
const PICK_SCALER = 1.0
13+
1014
func (k msgServer) UpgradePicksReport(goCtx context.Context, msg *types.MsgUpgradePicksReport) (*types.MsgUpgradePicksReportResponse, error) {
1115
if _, err := k.addressCodec.StringToBytes(msg.Creator); err != nil {
1216
return nil, errorsmod.Wrap(err, "invalid authority address")
1317
}
1418

15-
// TODO: Handle the message
19+
ctx := sdk.UnwrapSDKContext(goCtx)
20+
21+
creator, err := k.GetUserFromString(ctx, msg.Creator)
22+
if err != nil {
23+
return nil, errorsmod.Wrap(types.ErrUserDoesNotExist, err.Error())
24+
}
25+
if creator.ReportMatches == false {
26+
return nil, errorsmod.Wrap(sdkerrors.ErrUnauthorized, "Incorrect Reporter")
27+
}
28+
29+
pickAddition := PICK_SCALER * float32(len(msg.Dismissed)) / float32(len(msg.Picked))
30+
31+
for _, dismissed := range msg.Dismissed {
32+
upgradeFactor := k.UpgradeFactorK.Get(ctx, dismissed)
33+
upgradeFactor.Picks--
34+
k.UpgradeFactorK.Set(ctx, dismissed, upgradeFactor)
35+
}
36+
37+
for _, picked := range msg.Picked {
38+
upgradeFactor := k.UpgradeFactorK.Get(ctx, picked)
39+
upgradeFactor.Picks += pickAddition
40+
k.UpgradeFactorK.Set(ctx, picked, upgradeFactor)
41+
}
1642

1743
return &types.MsgUpgradePicksReportResponse{}, nil
1844
}

x/cardchain/keeper/query_upgrade_factors.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55

66
"github.com/DecentralCardGame/cardchain/x/cardchain/types"
7+
sdk "github.com/cosmos/cosmos-sdk/types"
78
"google.golang.org/grpc/codes"
89
"google.golang.org/grpc/status"
910
)
@@ -13,7 +14,7 @@ func (k Keeper) UpgradeFactors(goCtx context.Context, req *types.QueryUpgradeFac
1314
return nil, status.Error(codes.InvalidArgument, "invalid request")
1415
}
1516

16-
// TODO: Process the query
17+
ctx := sdk.UnwrapSDKContext(goCtx)
1718

18-
return &types.QueryUpgradeFactorsResponse{}, nil
19+
return &types.QueryUpgradeFactorsResponse{UpgradeFactors: k.UpgradeFactorK.GetAll(ctx)}, nil
1920
}

0 commit comments

Comments
 (0)