/
query_supplier.go
67 lines (54 loc) · 1.72 KB
/
query_supplier.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package keeper
import (
"context"
"fmt"
"cosmossdk.io/store/prefix"
"github.com/cosmos/cosmos-sdk/runtime"
"github.com/cosmos/cosmos-sdk/types/query"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
sharedtypes "github.com/pokt-network/poktroll/x/shared/types"
"github.com/pokt-network/poktroll/x/supplier/types"
)
func (k Keeper) AllSuppliers(
ctx context.Context,
req *types.QueryAllSuppliersRequest,
) (*types.QueryAllSuppliersResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "invalid request")
}
var suppliers []sharedtypes.Supplier
store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx))
supplierStore := prefix.NewStore(store, types.KeyPrefix(types.SupplierKeyPrefix))
pageRes, err := query.Paginate(
supplierStore,
req.Pagination,
func(key []byte, value []byte) error {
var supplier sharedtypes.Supplier
if err := k.cdc.Unmarshal(value, &supplier); err != nil {
return err
}
suppliers = append(suppliers, supplier)
return nil
},
)
if err != nil {
return nil, status.Error(codes.Internal, err.Error())
}
return &types.QueryAllSuppliersResponse{Supplier: suppliers, Pagination: pageRes}, nil
}
func (k Keeper) Supplier(
ctx context.Context,
req *types.QueryGetSupplierRequest,
) (*types.QueryGetSupplierResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "invalid request")
}
supplier, found := k.GetSupplier(ctx, req.Address)
if !found {
// TODO_TECHDEBT(#384): conform to logging conventions once established
msg := fmt.Sprintf("supplier with address %q", req.GetAddress())
return nil, status.Error(codes.NotFound, msg)
}
return &types.QueryGetSupplierResponse{Supplier: supplier}, nil
}