cudos_cosmwasm/
querier.rs1use cosmwasm_std::{QuerierWrapper, StdResult};
2
3use crate::query::{
4 CollectionResponse, CudosQuery, DenomResponse, DenomsResponse, OwnerCollectionResponse,
5 QueryNFTResponse, SupplyResponse, QueryApprovalsResponse, QueryApprovedForAllResponse, PaginationRequest,
6};
7
8pub struct CudosQuerier<'a> {
9 querier: &'a QuerierWrapper<'a, CudosQuery>,
10}
11
12impl<'a> CudosQuerier<'a> {
13 pub fn new(querier: &'a QuerierWrapper<'a, CudosQuery>) -> Self {
14 CudosQuerier { querier }
15 }
16
17 pub fn query_denom_by_id<T: Into<String>>(&self, denom_id: T) -> StdResult<DenomResponse> {
18 let request = CudosQuery::QueryDenomById {
19 denom_id: denom_id.into(),
20 }
21 .into();
22
23 self.querier.query(&request)
24 }
25
26 pub fn query_denom_by_name<T: Into<String>>(&self, denom_name: T) -> StdResult<DenomResponse> {
27 let request = CudosQuery::QueryDenomByName {
28 denom_name: denom_name.into(),
29 }
30 .into();
31
32 self.querier.query(&request)
33 }
34
35 pub fn query_denom_by_symbol<T: Into<String>>(&self, symbol: T) -> StdResult<DenomResponse> {
36 let request = CudosQuery::QueryDenomBySymbol {
37 denom_symbol: symbol.into(),
38 }
39 .into();
40
41 self.querier.query(&request)
42 }
43
44 pub fn query_denoms<>(&self, pagination: Option<PaginationRequest>) -> StdResult<DenomsResponse> {
45 let request = CudosQuery::QueryDenoms {
46 pagination: pagination,
47 }
48 .into();
49
50 self.querier.query(&request)
51 }
52
53 pub fn query_collection<T: Into<String>>(&self, denom_id: T, pagination: Option<PaginationRequest>) -> StdResult<CollectionResponse> {
54 let request = CudosQuery::QueryCollection {
55 denom_id: denom_id.into(),
56 pagination: pagination.into(),
57 }
58 .into();
59
60 self.querier.query(&request)
61 }
62
63 pub fn query_supply<T: Into<String>>(&self, denom_id: T) -> StdResult<SupplyResponse> {
64 let request = CudosQuery::QuerySupply {
65 denom_id: denom_id.into(),
66 }
67 .into();
68
69 self.querier.query(&request)
70 }
71
72 pub fn query_owner<T: Into<Option<String>>, D: Into<String>>(
73 &self,
74 denom_id: T,
75 address: D,
76 pagination: Option<PaginationRequest>,
77 ) -> StdResult<OwnerCollectionResponse> {
78 let request = CudosQuery::QueryOwner {
79 denom_id: denom_id.into(),
80 address: address.into(),
81 pagination: pagination.into(),
82 }
83 .into();
84
85 self.querier.query(&request)
86 }
87
88 pub fn query_token<T: Into<String>>(
89 &self,
90 denom_id: T,
91 token_id: T,
92 ) -> StdResult<QueryNFTResponse> {
93 let request = CudosQuery::QueryToken {
94 denom_id: denom_id.into(),
95 token_id: token_id.into(),
96 }
97 .into();
98
99 self.querier.query(&request)
100 }
101
102 pub fn query_approvals<T: Into<String>>(
103 &self,
104 denom_id: T,
105 token_id: T,
106 ) -> StdResult<QueryApprovalsResponse> {
107 let request = CudosQuery::QueryApprovals {
108 denom_id: denom_id.into(),
109 token_id: token_id.into(),
110 }
111 .into();
112
113 self.querier.query(&request)
114 }
115
116 pub fn query_approved_for_all<T: Into<String>>(
117 &self,
118 owner_address: T,
119 operator_address: T,
120 ) -> StdResult<QueryApprovedForAllResponse> {
121 let request = CudosQuery::QueryApprovedForAll {
122 owner_address: owner_address.into(),
123 operator_address: operator_address.into(),
124 }
125 .into();
126
127 self.querier.query(&request)
128 }
129}