diff --git a/Developing.md b/Developing.md index 5f855d8f..79b2cea1 100644 --- a/Developing.md +++ b/Developing.md @@ -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 diff --git a/packages/desmos-std/src/profiles/mod.rs b/packages/desmos-std/src/profiles/mod.rs index bcce9a41..460904e3 100644 --- a/packages/desmos-std/src/profiles/mod.rs +++ b/packages/desmos-std/src/profiles/mod.rs @@ -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; diff --git a/packages/desmos-std/src/profiles/models_app_links.rs b/packages/desmos-std/src/profiles/models_app_links.rs index e69de29b..07185ec4 100644 --- a/packages/desmos-std/src/profiles/models_app_links.rs +++ b/packages/desmos-std/src/profiles/models_app_links.rs @@ -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, + //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 +} diff --git a/packages/desmos-std/src/profiles/models_blocks.rs b/packages/desmos-std/src/profiles/models_blocks.rs new file mode 100644 index 00000000..990e9f66 --- /dev/null +++ b/packages/desmos-std/src/profiles/models_blocks.rs @@ -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, + //pub pagination: PageResponse +} diff --git a/packages/desmos-std/src/profiles/models_chain_links.rs b/packages/desmos-std/src/profiles/models_chain_links.rs index e69de29b..2577ccb5 100644 --- a/packages/desmos-std/src/profiles/models_chain_links.rs +++ b/packages/desmos-std/src/profiles/models_chain_links.rs @@ -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, + //pub pagination: PageResponse +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub struct QueryUserChainLinkResponse { + pub link: ChainLink +} + diff --git a/packages/desmos-std/src/profiles/models_dtag_requests.rs b/packages/desmos-std/src/profiles/models_dtag_requests.rs index e69de29b..43ec4fd2 100644 --- a/packages/desmos-std/src/profiles/models_dtag_requests.rs +++ b/packages/desmos-std/src/profiles/models_dtag_requests.rs @@ -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, + //pub pagination: PageResponse +} diff --git a/packages/desmos-std/src/profiles/models_profile.rs b/packages/desmos-std/src/profiles/models_profile.rs index 37a0b628..f2df4fe9 100644 --- a/packages/desmos-std/src/profiles/models_profile.rs +++ b/packages/desmos-std/src/profiles/models_profile.rs @@ -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 { @@ -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 { @@ -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 } diff --git a/packages/desmos-std/src/profiles/models_relationships.rs b/packages/desmos-std/src/profiles/models_relationships.rs index 6007cb75..dfdf6d5e 100644 --- a/packages/desmos-std/src/profiles/models_relationships.rs +++ b/packages/desmos-std/src/profiles/models_relationships.rs @@ -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")] @@ -14,6 +14,6 @@ pub struct Relationship { #[serde(rename_all = "snake_case")] pub struct QueryRelationshipsResponse { pub relationships: Vec, - pub pagination: Box + //pub pagination: PageResponse } diff --git a/packages/desmos-std/src/querier.rs b/packages/desmos-std/src/querier.rs index 3c53bd58..60ad46fd 100644 --- a/packages/desmos-std/src/querier.rs +++ b/packages/desmos-std/src/querier.rs @@ -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>, @@ -26,7 +31,7 @@ impl<'a> DesmosQuerier<'a> { Ok(res) } - pub fn query_relationships(&self, user: Addr, subspace_id: String, pagination: Option) + pub fn query_relationships(&self, user: Addr, subspace_id: u64, pagination: Option) -> StdResult { let request = DesmosQueryWrapper { route: DesmosRoute::Profiles, @@ -41,4 +46,88 @@ impl<'a> DesmosQuerier<'a> { Ok(res) } + pub fn query_incoming_dtag_transfer_request(&self, receiver: Addr, pagination: Option) + -> StdResult{ + 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) + -> StdResult { + 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) + -> StdResult { + 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 { + 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) + -> StdResult { + 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 { + 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 { + let request = DesmosQueryWrapper { + route: DesmosRoute::Profiles, + query_data: DesmosQuery::ApplicationLinkByChainID { client_id } + }; + + let res: QueryApplicationLinkByClientIDResponse = self.querier.query(&request.into())?; + Ok(res) + } } diff --git a/packages/desmos-std/src/queries.rs b/packages/desmos-std/src/queries.rs index cd6ab6ff..6a86d79a 100644 --- a/packages/desmos-std/src/queries.rs +++ b/packages/desmos-std/src/queries.rs @@ -26,12 +26,12 @@ pub enum DesmosQuery { }, Relationships { user: Addr, - subspace_id: String, + subspace_id: u64, pagination: Option }, Blocks { user: Addr, - subspace_id: String, + subspace_id: u64, pagination: Option }, ChainLinks {