From fde6b8c233d87779a567774a6f2e5ff20f48924d Mon Sep 17 00:00:00 2001 From: Serkan Reis Date: Thu, 7 Sep 2023 23:38:54 +0300 Subject: [PATCH] Use vanilla cw721 queries for collection --- contracts/vip/collection/src/contract.rs | 28 +++++------------------- contracts/vip/collection/src/lib.rs | 2 ++ contracts/vip/collection/src/msg.rs | 3 --- contracts/vip/minter/src/contract.rs | 21 +++++++----------- 4 files changed, 16 insertions(+), 38 deletions(-) diff --git a/contracts/vip/collection/src/contract.rs b/contracts/vip/collection/src/contract.rs index 9a9c457..eb3d891 100644 --- a/contracts/vip/collection/src/contract.rs +++ b/contracts/vip/collection/src/contract.rs @@ -2,12 +2,11 @@ use cosmwasm_std::entry_point; use cosmwasm_std::{to_binary, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult}; use cw2::set_contract_version; -use cw721::Cw721Query; +use cw721::{Cw721Query}; use cw721_base::InstantiateMsg; use crate::error::ContractError; -use crate::msg::QueryMsg; -use crate::{ExecuteMsg, VipCollection}; +use crate::{ExecuteMsg, QueryMsg, VipCollection}; const CONTRACT_NAME: &str = "crates.io:stargaze-vip-collection"; const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); @@ -59,31 +58,16 @@ pub fn execute( } #[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { - match msg { - QueryMsg::Metadata { token_id } => { - to_binary(&VipCollection::default().nft_info(deps, token_id)?.extension) - } - QueryMsg::TotalStaked { owner } => to_binary(&query_total_staked(deps, owner)?), - } -} - -/// Total staked is the sum of all staked amounts for a given owner. If -/// an owner has multiple items, it will iterate through all of them and -/// sum the staked amounts. -pub fn query_total_staked(deps: Deps, owner: String) -> StdResult { - // TODO: get all tokens by owner of `address` (token_id) - // TODO: iterate through metadata to get total stake weight - - todo!() +pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult { + VipCollection::default().query(deps, env, msg) } #[cfg(test)] mod tests { + use cosmwasm_std::Empty; use cw_multi_test::{Contract, ContractWrapper}; - use sg_std::StargazeMsgWrapper; - fn collection_contract() -> Box> { + fn collection_contract() -> Box> { let contract = ContractWrapper::new( crate::contract::instantiate, crate::contract::execute, diff --git a/contracts/vip/collection/src/lib.rs b/contracts/vip/collection/src/lib.rs index 4033b34..baa0003 100644 --- a/contracts/vip/collection/src/lib.rs +++ b/contracts/vip/collection/src/lib.rs @@ -3,6 +3,7 @@ mod error; pub mod msg; pub mod state; use cosmwasm_std::Empty; +use schemars::JsonSchema; use state::Metadata; pub use crate::error::ContractError; @@ -10,3 +11,4 @@ pub use crate::error::ContractError; pub type VipCollection<'a> = cw721_base::Cw721Contract<'a, Metadata, Empty, Empty, Empty>; pub type ExecuteMsg = cw721_base::ExecuteMsg; +pub type QueryMsg = cw721_base::QueryMsg; diff --git a/contracts/vip/collection/src/msg.rs b/contracts/vip/collection/src/msg.rs index 487dc08..2997a94 100644 --- a/contracts/vip/collection/src/msg.rs +++ b/contracts/vip/collection/src/msg.rs @@ -1,5 +1,4 @@ use cosmwasm_schema::{cw_serde, QueryResponses}; -use cosmwasm_std::Uint128; use crate::state::Metadata; @@ -8,6 +7,4 @@ use crate::state::Metadata; pub enum QueryMsg { #[returns(Metadata)] Metadata { token_id: String }, - #[returns(Uint128)] - TotalStaked { owner: String }, } diff --git a/contracts/vip/minter/src/contract.rs b/contracts/vip/minter/src/contract.rs index 161db6c..1b58316 100644 --- a/contracts/vip/minter/src/contract.rs +++ b/contracts/vip/minter/src/contract.rs @@ -4,10 +4,9 @@ use std::env; use cosmwasm_std::entry_point; use cosmwasm_std::{ ensure, instantiate2_address, to_binary, Addr, Binary, CodeInfoResponse, ContractInfoResponse, - Deps, DepsMut, Env, Event, MessageInfo, StdError, StdResult, Timestamp, Uint128, WasmMsg, + Deps, DepsMut, Env, Event, MessageInfo, Response, StdError, StdResult, Timestamp, Uint128, WasmMsg, }; use cw2::set_contract_version; -use sg_std::Response; use crate::error::ContractError; use crate::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; @@ -252,19 +251,15 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { #[cfg(test)] mod tests { use crate::msg::InstantiateMsg; - use crate::sudo; - use cosmwasm_std::{to_binary, Addr, Event, WasmMsg}; - use cw_multi_test::{Contract, ContractWrapper, Executor}; - use sg_multi_test::StargazeApp; - use sg_std::StargazeMsgWrapper; - - fn minter_contract() -> Box> { - let contract = ContractWrapper::new(super::instantiate, super::execute, super::query) - .with_sudo(sudo::sudo); + use cosmwasm_std::{to_binary, Addr, Event, WasmMsg, Empty}; + use cw_multi_test::{App, Contract, ContractWrapper, Executor}; + + fn minter_contract() -> Box> { + let contract = ContractWrapper::new(super::instantiate, super::execute, super::query); Box::new(contract) } - fn collection_contract() -> Box> { + fn collection_contract() -> Box> { let contract = ContractWrapper::new( stargaze_vip_collection::contract::execute, stargaze_vip_collection::contract::instantiate, @@ -274,7 +269,7 @@ mod tests { } #[test] fn try_instantiate() { - let mut app = StargazeApp::default(); + let mut app = App::default(); let minter_code_id = app.store_code(minter_contract()); let collection_code_id = app.store_code(collection_contract());