Skip to content

Commit

Permalink
implemented remaining queries
Browse files Browse the repository at this point in the history
  • Loading branch information
leobragaz committed Feb 18, 2022
1 parent aa0d162 commit f3c55fd
Show file tree
Hide file tree
Showing 10 changed files with 262 additions and 19 deletions.
2 changes: 1 addition & 1 deletion Developing.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ The suggest way to run it is this:
docker run --rm -v "$(pwd)":/code \
--mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \
--mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \
cosmwasm/rust-optimizer:0.12.3
cosmwasm/rust-optimizer:0.12.5
```

We must mount the contract code to `/code`. You can use a absolute path instead
Expand Down
1 change: 1 addition & 0 deletions packages/desmos-std/src/profiles/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ pub mod models_dtag_requests;
pub mod models_relationships;
pub mod models_chain_links;
pub mod models_app_links;
pub mod models_blocks;
72 changes: 72 additions & 0 deletions packages/desmos-std/src/profiles/models_app_links.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::types::{PageResponse};

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct ApplicationLink {
pub user: String,
pub data: Data,
pub state: AppLinkState,
pub oracle_request: OracleRequest,
pub result: AppLinkResult,
pub creation_time: String,
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct Data {
pub application: String,
pub username: String
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct AppLinkState(i32);

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct OracleRequest {
pub id: u64,
pub oracle_script_id: u64,
pub call_data: CallData,
pub client_id: String
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct CallData {
pub application: String,
pub call_data: String,
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum AppLinkResult {
Success {
value: String,
signature: String,
},
Failed {
error: String
}
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct QueryApplicationLinksResponse {
pub links: Vec<ApplicationLink>,
//pub pagination: PageResponse
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct QueryUserApplicationLinkResponse {
pub links: ApplicationLink
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct QueryApplicationLinkByClientIDResponse {
pub link: ApplicationLink
}
20 changes: 20 additions & 0 deletions packages/desmos-std/src/profiles/models_blocks.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
use cosmwasm_std::Addr;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::types::{PageResponse};

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct UserBlock {
pub blocker: Addr,
pub blocked: Addr,
pub reason: String,
pub subspace: u64
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct QueryBlocksResponse {
pub blocks: Vec<UserBlock>,
//pub pagination: PageResponse
}
42 changes: 42 additions & 0 deletions packages/desmos-std/src/profiles/models_chain_links.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
use cosmwasm_std::Addr;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::types::{PageResponse};

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct ChainLink {
pub user: Addr,
pub address: String,
pub proof: Proof,
pub chain_config: ChainConfig,
pub creation_time: String,
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct Proof {
pub pub_key: String,
pub signature: String,
pub plain_text: String,
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct ChainConfig {
pub name: String
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct QueryChainLinksResponse {
pub links: Vec<ChainLink>,
//pub pagination: PageResponse
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct QueryUserChainLinkResponse {
pub link: ChainLink
}

19 changes: 19 additions & 0 deletions packages/desmos-std/src/profiles/models_dtag_requests.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
use cosmwasm_std::Addr;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
//use crate::types::{PageResponse};

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct DtagTransferRequest {
pub dtag_to_trade: String,
pub sender: Addr,
pub receiver: Addr,
}

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct QueryIncomingDtagTransferRequestResponse {
pub requests: Vec<DtagTransferRequest>,
//pub pagination: PageResponse
}
16 changes: 8 additions & 8 deletions packages/desmos-std/src/profiles/models_profile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ use serde::{Deserialize, Serialize};
#[serde(rename_all = "snake_case")]
pub struct Profile {
//account: Addr,
dtag: String,
nickname: String,
bio: String,
pictures: Pictures,
creation_date: String
pub dtag: String,
pub nickname: String,
pub bio: String,
pub pictures: Pictures,
pub creation_date: String
}

impl Profile {
Expand All @@ -36,8 +36,8 @@ impl Profile {
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct Pictures {
profile: String,
cover: String
pub profile: String,
pub cover: String
}

impl Pictures {
Expand All @@ -49,5 +49,5 @@ impl Pictures {
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub struct QueryProfileResponse {
profile: Profile
pub profile: Profile
}
4 changes: 2 additions & 2 deletions packages/desmos-std/src/profiles/models_relationships.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::types::{PageResponse};
//use crate::types::{PageResponse};

#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
Expand All @@ -14,6 +14,6 @@ pub struct Relationship {
#[serde(rename_all = "snake_case")]
pub struct QueryRelationshipsResponse {
pub relationships: Vec<Relationship>,
pub pagination: Box<PageResponse>
//pub pagination: PageResponse
}

101 changes: 95 additions & 6 deletions packages/desmos-std/src/querier.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
use cosmwasm_std::{Addr, QuerierWrapper, StdResult};
use crate::{
queries::{DesmosQueryWrapper, DesmosQuery},
types::DesmosRoute,
types::{DesmosRoute, PageRequest},
profiles::{
models_app_links::{QueryApplicationLinkByClientIDResponse, QueryApplicationLinksResponse, QueryUserApplicationLinkResponse},
models_blocks::QueryBlocksResponse,
models_chain_links::{QueryChainLinksResponse, QueryUserChainLinkResponse},
models_dtag_requests::QueryIncomingDtagTransferRequestResponse,
models_profile::QueryProfileResponse,
models_relationships::QueryRelationshipsResponse,
}
};
use cosmwasm_std::{Addr, QuerierWrapper, StdResult};
use crate::profiles::models_profile::QueryProfileResponse;
use crate::profiles::models_relationships::QueryRelationshipsResponse;
use crate::types::PageRequest;

pub struct DesmosQuerier<'a> {
querier: &'a QuerierWrapper<'a, DesmosQueryWrapper>,
Expand All @@ -26,7 +31,7 @@ impl<'a> DesmosQuerier<'a> {
Ok(res)
}

pub fn query_relationships(&self, user: Addr, subspace_id: String, pagination: Option<PageRequest>)
pub fn query_relationships(&self, user: Addr, subspace_id: u64, pagination: Option<PageRequest>)
-> StdResult<QueryRelationshipsResponse> {
let request = DesmosQueryWrapper {
route: DesmosRoute::Profiles,
Expand All @@ -41,4 +46,88 @@ impl<'a> DesmosQuerier<'a> {
Ok(res)
}

pub fn query_incoming_dtag_transfer_request(&self, receiver: Addr, pagination: Option<PageRequest>)
-> StdResult<QueryIncomingDtagTransferRequestResponse>{
let request = DesmosQueryWrapper {
route: DesmosRoute::Profiles,
query_data: DesmosQuery::IncomingDtagTransferRequests { receiver, pagination }
};

let res: QueryIncomingDtagTransferRequestResponse = self.querier.query(&request.into())?;
Ok(res)
}

pub fn query_blocks(&self, user: Addr, subspace_id: u64, pagination: Option<PageRequest>)
-> StdResult<QueryBlocksResponse> {
let request = DesmosQueryWrapper {
route: DesmosRoute::Profiles,
query_data: DesmosQuery::Blocks { user, subspace_id, pagination }
};

let res: QueryBlocksResponse = self.querier.query(&request.into())?;
Ok(res)
}

pub fn query_chain_links(&self, user: Addr, pagination: Option<PageRequest>)
-> StdResult<QueryChainLinksResponse> {
let request = DesmosQueryWrapper{
route: DesmosRoute::Profiles,
query_data: DesmosQuery::ChainLinks { user, pagination }
};

let res: QueryChainLinksResponse = self.querier.query(&request.into())?;
Ok(res)
}

pub fn query_user_chain_link(&self, user: Addr, chain_name: String, target: String)
-> StdResult<QueryUserChainLinkResponse> {
let request = DesmosQueryWrapper{
route: DesmosRoute::Profiles,
query_data: DesmosQuery::UserChainLink {
user,
chain_name,
target
}
};

let res: QueryUserChainLinkResponse = self.querier.query(&request.into())?;
Ok(res)
}

pub fn query_application_links(&self, user: Addr, pagination: Option<PageRequest>)
-> StdResult<QueryApplicationLinksResponse> {
let request = DesmosQueryWrapper {
route: DesmosRoute::Profiles,
query_data: DesmosQuery::AppLinks { user, pagination }
};

let res: QueryApplicationLinksResponse = self.querier.query(&request.into())?;
Ok(res)
}

pub fn query_user_application_link(&self, user: Addr, application: String, username: String)
-> StdResult<QueryUserApplicationLinkResponse> {
let request = DesmosQueryWrapper{
route: DesmosRoute::Profiles,
query_data: DesmosQuery::UserAppLinks {
user,
application,
username
}
};

let res: QueryUserApplicationLinkResponse = self.querier.query(&request.into())?;
Ok(res)
}

pub fn query_application_link_by_client_id(&self, client_id: String)
-> StdResult<QueryApplicationLinkByClientIDResponse> {
let request = DesmosQueryWrapper {
route: DesmosRoute::Profiles,
query_data: DesmosQuery::ApplicationLinkByChainID { client_id }
};

let res: QueryApplicationLinkByClientIDResponse = self.querier.query(&request.into())?;
Ok(res)
}
}
4 changes: 2 additions & 2 deletions packages/desmos-std/src/queries.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ pub enum DesmosQuery {
},
Relationships {
user: Addr,
subspace_id: String,
subspace_id: u64,
pagination: Option<PageRequest>
},
Blocks {
user: Addr,
subspace_id: String,
subspace_id: u64,
pagination: Option<PageRequest>
},
ChainLinks {
Expand Down

0 comments on commit f3c55fd

Please sign in to comment.