1use crate::{
2 query_types::{
3 DesmosQuery, DesmosQueryWrapper, PostsResponse, ReactionsResponse, ReportsResponse,
4 },
5 types::DesmosRoute,
6};
7use cosmwasm_std::{QuerierWrapper, StdResult};
8
9pub struct DesmosQuerier<'a> {
10 querier: &'a QuerierWrapper<'a, DesmosQueryWrapper>,
11}
12
13impl<'a> DesmosQuerier<'a> {
14 pub fn new(querier: &'a QuerierWrapper<'a, DesmosQueryWrapper>) -> Self {
15 DesmosQuerier { querier }
16 }
17
18 pub fn query_posts(&self) -> StdResult<PostsResponse> {
19 let request = DesmosQueryWrapper {
20 route: DesmosRoute::Posts,
21 query_data: DesmosQuery::Posts {},
22 };
23
24 let res: PostsResponse = self.querier.query(&request.into())?;
25 Ok(res)
26 }
27
28 pub fn query_post_reports(&self, post_id: String) -> StdResult<ReportsResponse> {
29 let request = DesmosQueryWrapper {
30 route: DesmosRoute::Posts,
31 query_data: DesmosQuery::Reports { post_id },
32 };
33
34 let res: ReportsResponse = self.querier.query(&request.into())?;
35 Ok(res)
36 }
37
38 pub fn query_post_reactions(&self, post_id: String) -> StdResult<ReactionsResponse> {
39 let request = DesmosQueryWrapper {
40 route: DesmosRoute::Posts,
41 query_data: DesmosQuery::Reactions { post_id },
42 };
43
44 let res: ReactionsResponse = self.querier.query(&request.into())?;
45 Ok(res)
46 }
47}