Add a command to get auctions by bidder address

This commit is contained in:
Prathamesh Musale 2024-02-13 19:13:00 +05:30
parent 23e6e2f16a
commit 513ad9975b
3 changed files with 47 additions and 2 deletions

View File

@ -204,12 +204,38 @@ func (k Keeper) GetAuctionById(ctx sdk.Context, id string) (auctiontypes.Auction
func (k Keeper) GetAuctionsByOwner(ctx sdk.Context, owner string) ([]auctiontypes.Auction, error) {
iter, err := k.Auctions.Indexes.Owner.MatchExact(ctx, owner)
if err != nil {
return []auctiontypes.Auction{}, err
return nil, err
}
return indexes.CollectValues(ctx, k.Auctions, iter)
}
// QueryAuctionsByBidder - query auctions by bidder
func (k Keeper) QueryAuctionsByBidder(ctx sdk.Context, bidderAddress string) ([]auctiontypes.Auction, error) {
auctions := []auctiontypes.Auction{}
iter, err := k.Bids.Indexes.Bidder.MatchExact(ctx, bidderAddress)
if err != nil {
return nil, err
}
for ; iter.Valid(); iter.Next() {
keyPair, err := iter.PrimaryKey()
if err != nil {
return nil, err
}
auction, err := k.GetAuctionById(ctx, keyPair.K1())
if err != nil {
return nil, err
}
auctions = append(auctions, auction)
}
return auctions, nil
}
// CreateAuction creates a new auction.
func (k Keeper) CreateAuction(ctx sdk.Context, msg auctiontypes.MsgCreateAuction) (*auctiontypes.Auction, error) {
// TODO: Setup checks

View File

@ -101,7 +101,18 @@ func (qs queryServer) GetBids(c context.Context, req *auctiontypes.QueryBidsRequ
// AuctionsByBidder queries auctions by bidder
func (qs queryServer) AuctionsByBidder(c context.Context, req *auctiontypes.QueryAuctionsByBidderRequest) (*auctiontypes.QueryAuctionsByBidderResponse, error) {
panic("unimplemented")
ctx := sdk.UnwrapSDKContext(c)
if req.BidderAddress == "" {
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "bidder address is required")
}
auctions, err := qs.k.QueryAuctionsByBidder(ctx, req.BidderAddress)
if err != nil {
return nil, err
}
return &auctiontypes.QueryAuctionsByBidderResponse{Auctions: &auctiontypes.Auctions{Auctions: auctions}}, nil
}
// AuctionsByOwner queries auctions by owner

View File

@ -60,6 +60,14 @@ func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions {
{ProtoField: "auction_id"},
},
},
{
RpcMethod: "AuctionsByBidder",
Use: "by-bidder [bidder]",
Short: "Get auctions list by bidder",
PositionalArgs: []*autocliv1.PositionalArgDescriptor{
{ProtoField: "bidder_address"},
},
},
},
},
Tx: &autocliv1.ServiceCommandDescriptor{