Skip to content

Commit f600728

Browse files
committed
chore: add in query impl into asset-base contract
1 parent 9a0cf71 commit f600728

File tree

6 files changed

+35
-22
lines changed

6 files changed

+35
-22
lines changed

contracts/asset/src/contracts/asset_base.rs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#[cfg(feature = "asset_base")]
2+
use crate::msg::AssetExtensionQueryMsg;
13
// Default implementation of the xion asset standard showing how to set up a contract
24
// to use the default trait XionAssetExecuteExtension
35
use crate::plugin::PluggableAsset;
@@ -58,13 +60,19 @@ pub fn execute(
5860
#[cfg_attr(not(feature = "library"), cosmwasm_std::entry_point)]
5961
#[cfg(feature = "asset_base")]
6062
pub fn query(
61-
_deps: Deps,
62-
_env: Env,
63-
_msg: cw721::msg::Cw721QueryMsg<
63+
deps: Deps,
64+
env: Env,
65+
msg: cw721::msg::Cw721QueryMsg<
6466
DefaultOptionalNftExtension,
6567
DefaultOptionalCollectionExtension,
66-
cosmwasm_std::Empty,
68+
AssetExtensionQueryMsg,
6769
>,
6870
) -> StdResult<Binary> {
69-
unimplemented!("asset query entry point is not implemented yet")
71+
use cw721::traits::Cw721Query;
72+
73+
use crate::error::ContractError;
74+
75+
let contract: AssetBaseContract<'static> = AssetContract::default();
76+
77+
contract.query(deps, &env, msg).map_err(|err| ContractError::from(err).into())
7078
}

contracts/asset/src/msg.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::{plugin::Plugin, state::Reserve};
22
use cosmwasm_schema::cw_serde;
3-
use cosmwasm_std::{Coin, CustomQuery};
3+
use cosmwasm_std::{Coin};
44
use cw721::traits::Cw721CustomMsg;
55

66
pub type InstantiateMsg<CollectionExtension> = cw721::msg::Cw721InstantiateMsg<CollectionExtension>;

contracts/asset/src/plugin.rs

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
use std::{default, fmt::Display, time::Duration};
1+
use std::{fmt::Display, time::Duration};
22

33
use cosmwasm_schema::cw_serde;
44
use cosmwasm_std::{
55
Addr, BankMsg, Binary, Coin, CosmosMsg, CustomMsg, Deps, DepsMut, Empty, Env, MessageInfo,
6-
Response, StdResult, SubMsg, Timestamp, coin,
6+
Response, StdResult, SubMsg, coin,
77
};
88
use cw721::{
99
Expiration,
@@ -18,9 +18,8 @@ use cw721::{
1818
use crate::{
1919
error::ContractError,
2020
msg::AssetExtensionExecuteMsg,
21-
plugin,
2221
state::{AssetConfig, Reserve},
23-
traits::{AssetContract, DefaultAssetContract, SellableAsset},
22+
traits::{DefaultAssetContract, SellableAsset},
2423
};
2524

2625
/// Shared context passed through the pipeline, mutated by plugins.
@@ -464,15 +463,21 @@ where
464463
plugin_ctx_deductions = plugin_ctx.deductions.clone();
465464
};
466465
let mut response = match &msg {
467-
Cw721ExecuteMsg::UpdateExtension { msg: extension_msg } => {
468-
match extension_msg {
469-
AssetExtensionExecuteMsg::Buy { token_id, recipient } => {
470-
self.buy(deps, env, info, (*token_id).clone(), (*recipient).clone(), plugin_ctx_deductions)?
471-
},
472-
_ => self.execute(deps, env, info, msg)?,
473-
}
466+
Cw721ExecuteMsg::UpdateExtension { msg: extension_msg } => match extension_msg {
467+
AssetExtensionExecuteMsg::Buy {
468+
token_id,
469+
recipient,
470+
} => self.buy(
471+
deps,
472+
env,
473+
info,
474+
(*token_id).clone(),
475+
(*recipient).clone(),
476+
plugin_ctx_deductions,
477+
)?,
478+
_ => self.execute(deps, env, info, msg)?,
474479
},
475-
_ => self.execute(deps, env, info, msg)?,
480+
_ => self.execute(deps, env, info, msg)?,
476481
};
477482

478483
response.messages.extend(plugin_response.messages);

contracts/asset/src/state.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use cosmwasm_schema::cw_serde;
2-
use cosmwasm_std::{Addr, Coin, from_json, to_json_binary};
2+
use cosmwasm_std::{Addr, Coin};
33
use cw_storage_plus::{IndexList, IndexedMap, Item, Map, MultiIndex};
44
use cw721::{
55
Expiration,
66
state::{Cw721Config, NftInfo},
7-
traits::{Cw721State, FromAttributesState, ToAttributesState},
7+
traits::{Cw721State},
88
};
99

1010
use crate::plugin::Plugin;

contracts/asset/src/test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1174,7 +1174,7 @@ mod asset_pluggable_sellable_test {
11741174
#[test]
11751175
fn buy_deducts_marketplace_and_royalty_fees() {
11761176
let mut deps = mock_dependencies();
1177-
let mut contract: DefaultAssetContract<'static, Empty, Empty, Empty, Empty> =
1177+
let contract: DefaultAssetContract<'static, Empty, Empty, Empty, Empty> =
11781178
Default::default();
11791179

11801180
let seller = deps.api.addr_make("seller");

contracts/asset/src/traits.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use crate::{
77
plugin::PluggableAsset,
88
state::{AssetConfig, Reserve},
99
};
10-
use cosmwasm_std::{to_json_binary, Addr, Coin, CustomMsg, DepsMut, Empty, Env, MessageInfo, Response};
10+
use cosmwasm_std::{to_json_binary, Coin, CustomMsg, DepsMut, Empty, Env, MessageInfo, Response};
1111
use cw_storage_plus::Bound;
1212
use cw721::traits::{
1313
Contains, Cw721CustomMsg, Cw721Execute, Cw721Query, Cw721State, FromAttributesState,

0 commit comments

Comments
 (0)