-
Notifications
You must be signed in to change notification settings - Fork 193
/
grpc_query_user_redemption_record_for_user.go
44 lines (36 loc) · 1.23 KB
/
grpc_query_user_redemption_record_for_user.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package keeper
import (
"context"
sdk "github.com/cosmos/cosmos-sdk/types"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"github.com/Stride-Labs/stride/v19/x/records/types"
)
func (k Keeper) UserRedemptionRecordForUser(c context.Context, req *types.QueryAllUserRedemptionRecordForUserRequest) (*types.QueryAllUserRedemptionRecordForUserResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "invalid request")
}
var userRedemptionRecords []types.UserRedemptionRecord
ctx := sdk.UnwrapSDKContext(c)
// limit loop to 50 records for performance
var loopback uint64
loopback = req.Limit
if loopback > 50 {
loopback = 50
}
var i uint64
for i = 0; i < loopback; i++ {
if i > req.Day {
// we have reached the end of the records
break
}
currentDay := req.Day - i
// query the user redemption record for the current day
userRedemptionRecord, found := k.GetUserRedemptionRecord(ctx, types.UserRedemptionRecordKeyFormatter(req.ChainId, currentDay, req.Address))
if !found {
continue
}
userRedemptionRecords = append(userRedemptionRecords, userRedemptionRecord)
}
return &types.QueryAllUserRedemptionRecordForUserResponse{UserRedemptionRecord: userRedemptionRecords}, nil
}