Additional auction module commands #3
@ -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) {
|
func (k Keeper) GetAuctionsByOwner(ctx sdk.Context, owner string) ([]auctiontypes.Auction, error) {
|
||||||
iter, err := k.Auctions.Indexes.Owner.MatchExact(ctx, owner)
|
iter, err := k.Auctions.Indexes.Owner.MatchExact(ctx, owner)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return []auctiontypes.Auction{}, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return indexes.CollectValues(ctx, k.Auctions, iter)
|
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.
|
// CreateAuction creates a new auction.
|
||||||
func (k Keeper) CreateAuction(ctx sdk.Context, msg auctiontypes.MsgCreateAuction) (*auctiontypes.Auction, error) {
|
func (k Keeper) CreateAuction(ctx sdk.Context, msg auctiontypes.MsgCreateAuction) (*auctiontypes.Auction, error) {
|
||||||
// TODO: Setup checks
|
// TODO: Setup checks
|
||||||
|
@ -101,7 +101,18 @@ func (qs queryServer) GetBids(c context.Context, req *auctiontypes.QueryBidsRequ
|
|||||||
|
|
||||||
// AuctionsByBidder queries auctions by bidder
|
// AuctionsByBidder queries auctions by bidder
|
||||||
func (qs queryServer) AuctionsByBidder(c context.Context, req *auctiontypes.QueryAuctionsByBidderRequest) (*auctiontypes.QueryAuctionsByBidderResponse, error) {
|
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
|
// AuctionsByOwner queries auctions by owner
|
||||||
|
@ -60,6 +60,14 @@ func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions {
|
|||||||
{ProtoField: "auction_id"},
|
{ProtoField: "auction_id"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
RpcMethod: "AuctionsByBidder",
|
||||||
|
Use: "by-bidder [bidder]",
|
||||||
|
Short: "Get auctions list by bidder",
|
||||||
|
PositionalArgs: []*autocliv1.PositionalArgDescriptor{
|
||||||
|
{ProtoField: "bidder_address"},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Tx: &autocliv1.ServiceCommandDescriptor{
|
Tx: &autocliv1.ServiceCommandDescriptor{
|
||||||
|
Loading…
Reference in New Issue
Block a user