93 lines
3.3 KiB
Go
93 lines
3.3 KiB
Go
package keeper
|
|
|
|
import (
|
|
"context"
|
|
|
|
errorsmod "cosmossdk.io/errors"
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
|
|
|
|
"github.com/cerc-io/laconicd/x/auction/types"
|
|
)
|
|
|
|
type Querier struct {
|
|
Keeper
|
|
}
|
|
|
|
var _ types.QueryServer = Querier{}
|
|
|
|
// Auctions queries all auctions
|
|
func (q Querier) Auctions(c context.Context, req *types.AuctionsRequest) (*types.AuctionsResponse, error) {
|
|
ctx := sdk.UnwrapSDKContext(c)
|
|
resp := q.Keeper.ListAuctions(ctx)
|
|
return &types.AuctionsResponse{Auctions: &types.Auctions{Auctions: resp}}, nil
|
|
}
|
|
|
|
// GetAuction queries an auction
|
|
func (q Querier) GetAuction(c context.Context, req *types.AuctionRequest) (*types.AuctionResponse, error) {
|
|
ctx := sdk.UnwrapSDKContext(c)
|
|
if req.Id == "" {
|
|
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "auction ID is required")
|
|
}
|
|
|
|
resp := q.Keeper.GetAuction(ctx, req.Id)
|
|
return &types.AuctionResponse{Auction: resp}, nil
|
|
}
|
|
|
|
// GetBid queries and auction bid
|
|
func (q Querier) GetBid(c context.Context, req *types.BidRequest) (*types.BidResponse, error) {
|
|
ctx := sdk.UnwrapSDKContext(c)
|
|
if req.AuctionId == "" {
|
|
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "auction ID is required")
|
|
}
|
|
if req.Bidder == "" {
|
|
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "bidder address is required")
|
|
}
|
|
resp := q.Keeper.GetBid(ctx, req.AuctionId, req.Bidder)
|
|
return &types.BidResponse{Bid: &resp}, nil
|
|
}
|
|
|
|
// GetBids queries all auction bids
|
|
func (q Querier) GetBids(c context.Context, req *types.BidsRequest) (*types.BidsResponse, error) {
|
|
ctx := sdk.UnwrapSDKContext(c)
|
|
if req.AuctionId == "" {
|
|
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "auction ID is required")
|
|
}
|
|
resp := q.Keeper.GetBids(ctx, req.AuctionId)
|
|
return &types.BidsResponse{Bids: resp}, nil
|
|
}
|
|
|
|
// AuctionsByBidder queries auctions by bidder
|
|
func (q Querier) AuctionsByBidder(c context.Context, req *types.AuctionsByBidderRequest) (*types.AuctionsByBidderResponse, error) {
|
|
ctx := sdk.UnwrapSDKContext(c)
|
|
if req.BidderAddress == "" {
|
|
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "bidder address is required")
|
|
}
|
|
resp := q.Keeper.QueryAuctionsByBidder(ctx, req.BidderAddress)
|
|
return &types.AuctionsByBidderResponse{Auctions: &types.Auctions{Auctions: resp}}, nil
|
|
}
|
|
|
|
// AuctionsByOwner queries auctions by owner
|
|
func (q Querier) AuctionsByOwner(c context.Context, req *types.AuctionsByOwnerRequest) (*types.AuctionsByOwnerResponse, error) {
|
|
ctx := sdk.UnwrapSDKContext(c)
|
|
if req.OwnerAddress == "" {
|
|
return nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "owner address is required")
|
|
}
|
|
resp := q.Keeper.QueryAuctionsByOwner(ctx, req.OwnerAddress)
|
|
return &types.AuctionsByOwnerResponse{Auctions: &types.Auctions{Auctions: resp}}, nil
|
|
}
|
|
|
|
// QueryParams implements the params query command
|
|
func (q Querier) QueryParams(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) {
|
|
ctx := sdk.UnwrapSDKContext(c)
|
|
resp := q.Keeper.GetParams(ctx)
|
|
return &types.QueryParamsResponse{Params: &resp}, nil
|
|
}
|
|
|
|
// Balance queries the auction module account balance
|
|
func (q Querier) Balance(c context.Context, req *types.BalanceRequest) (*types.BalanceResponse, error) {
|
|
ctx := sdk.UnwrapSDKContext(c)
|
|
resp := q.Keeper.GetAuctionModuleBalances(ctx)
|
|
return &types.BalanceResponse{Balance: resp}, nil
|
|
}
|