cudos_cosmwasm/
querier.rs

1use 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}