desmos_std/
querier.rs

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}