desmos_cw/
query_types.rs

1use crate::types::{DesmosRoute, Post, Reaction, Report};
2use cosmwasm_std::CustomQuery;
3use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5
6/// DesmosQueryWrapper is an override of QueryRequest::Custom to access desmos-specific modules
7#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
8#[serde(rename_all = "snake_case")]
9pub struct DesmosQueryWrapper {
10    pub route: DesmosRoute,
11    pub query_data: DesmosQuery,
12}
13
14impl CustomQuery for DesmosQueryWrapper {}
15
16/// DesmosQuery represents the available desmos network queries
17#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
18#[serde(rename_all = "snake_case")]
19pub enum DesmosQuery {
20    Posts {},
21    Reactions { post_id: String },
22    Reports { post_id: String },
23}
24
25/// PostsResponse contains a list of posts
26#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
27#[serde(rename_all = "snake_case")]
28pub struct PostsResponse {
29    pub posts: Vec<Post>,
30}
31
32/// ReportsResponse contains the list of reports associated with the given post_id
33#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
34#[serde(rename_all = "snake_case")]
35pub struct ReportsResponse {
36    pub reports: Vec<Report>,
37}
38
39/// ReactionsResponse contains the list of reactions associated to the given post_id
40#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
41#[serde(rename_all = "snake_case")]
42pub struct ReactionsResponse {
43    pub reactions: Vec<Reaction>,
44}