From a7efaa34900b598088d3246e41a5e789f17d0e64 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Mon, 26 Oct 2020 15:28:56 +0100 Subject: [PATCH] Rename Querier types, for cleaner public Api --- contracts/burner/src/contract.rs | 7 +------ contracts/staking/src/contract.rs | 4 ++-- packages/std/src/deps.rs | 16 ++++++++-------- packages/std/src/entry_points.rs | 4 ++-- packages/std/src/imports.rs | 4 ++-- packages/std/src/lib.rs | 2 +- packages/std/src/mock.rs | 4 ++-- packages/std/src/traits.rs | 14 ++++++-------- packages/vm/src/testing/querier.rs | 2 +- 9 files changed, 25 insertions(+), 32 deletions(-) diff --git a/contracts/burner/src/contract.rs b/contracts/burner/src/contract.rs index 7bbbbf24a..d257c6837 100644 --- a/contracts/burner/src/contract.rs +++ b/contracts/burner/src/contract.rs @@ -5,12 +5,7 @@ use cosmwasm_std::{ use crate::msg::{HandleMsg, InitMsg, MigrateMsg, QueryMsg}; -pub fn init( - _deps: Deps, - _env: Env, - _info: MessageInfo, - _msg: InitMsg, -) -> StdResult { +pub fn init(_deps: Deps, _env: Env, _info: MessageInfo, _msg: InitMsg) -> StdResult { Err(StdError::generic_err( "You can only use this contract for migrations", )) diff --git a/contracts/staking/src/contract.rs b/contracts/staking/src/contract.rs index a3677ce2d..acfefa383 100644 --- a/contracts/staking/src/contract.rs +++ b/contracts/staking/src/contract.rs @@ -1,6 +1,6 @@ use cosmwasm_std::{ attr, coin, to_binary, BankMsg, Binary, Decimal, Deps, DepsRef, Env, HandleResponse, HumanAddr, - InitResponse, MessageInfo, QuerierWrapper, StakingMsg, StdError, StdResult, Uint128, WasmMsg, + InitResponse, MessageInfo, Querier, StakingMsg, StdError, StdResult, Uint128, WasmMsg, }; use crate::errors::{StakingError, Unauthorized}; @@ -100,7 +100,7 @@ pub fn transfer( // get_bonded returns the total amount of delegations from contract // it ensures they are all the same denom -fn get_bonded(querier: &QuerierWrapper, contract: &HumanAddr) -> StdResult { +fn get_bonded(querier: &Querier, contract: &HumanAddr) -> StdResult { let bonds = querier.query_all_delegations(contract)?; if bonds.is_empty() { return Ok(Uint128(0)); diff --git a/packages/std/src/deps.rs b/packages/std/src/deps.rs index ab4e7173e..fe12692cb 100644 --- a/packages/std/src/deps.rs +++ b/packages/std/src/deps.rs @@ -1,11 +1,11 @@ -use crate::traits::{Api, Querier, Storage}; -use crate::QuerierWrapper; +use crate::traits::{Api, QuerierTrait, Storage}; +use crate::Querier; /// Holds all external dependencies of the contract. /// Designed to allow easy dependency injection at runtime. /// This cannot be copied or cloned since it would behave differently /// for mock storages and a bridge storage in the VM. -pub struct OwnedDeps { +pub struct OwnedDeps { pub storage: S, pub api: A, pub querier: Q, @@ -14,22 +14,22 @@ pub struct OwnedDeps { pub struct Deps<'a> { pub storage: &'a mut dyn Storage, pub api: &'a dyn Api, - pub querier: QuerierWrapper<'a>, + pub querier: Querier<'a>, } #[derive(Copy, Clone)] pub struct DepsRef<'a> { pub storage: &'a dyn Storage, pub api: &'a dyn Api, - pub querier: QuerierWrapper<'a>, + pub querier: Querier<'a>, } -impl OwnedDeps { +impl OwnedDeps { pub fn as_ref(&'_ self) -> DepsRef<'_> { DepsRef { storage: &self.storage, api: &self.api, - querier: QuerierWrapper::new(&self.querier), + querier: Querier::new(&self.querier), } } @@ -37,7 +37,7 @@ impl OwnedDeps { Deps { storage: &mut self.storage, api: &self.api, - querier: QuerierWrapper::new(&self.querier), + querier: Querier::new(&self.querier), } } } diff --git a/packages/std/src/entry_points.rs b/packages/std/src/entry_points.rs index b41ad6e8f..4257832ff 100644 --- a/packages/std/src/entry_points.rs +++ b/packages/std/src/entry_points.rs @@ -6,7 +6,7 @@ /// The second module should export three functions with the following signatures: /// ``` /// # use cosmwasm_std::{ -/// # Storage, Api, Querier, Deps, DepsRef, Env, StdResult, Binary, MessageInfo, +/// # Storage, Api, QuerierTrait, Deps, DepsRef, Env, StdResult, Binary, MessageInfo, /// # InitResult, HandleResult, QueryResult, /// # }; /// # @@ -94,7 +94,7 @@ macro_rules! create_entry_points { /// This macro is very similar to the `create_entry_points` macro, except it also requires the `migrate` method: /// ``` /// # use cosmwasm_std::{ -/// # Storage, Api, Querier, Deps, Env, StdResult, Binary, MigrateResult, MessageInfo, +/// # Storage, Api, QuerierTrait, Deps, Env, StdResult, Binary, MigrateResult, MessageInfo, /// # }; /// # type MigrateMsg = (); /// pub fn migrate( diff --git a/packages/std/src/imports.rs b/packages/std/src/imports.rs index 3ad4b2ded..cdc093c2c 100644 --- a/packages/std/src/imports.rs +++ b/packages/std/src/imports.rs @@ -6,7 +6,7 @@ use crate::errors::{StdError, StdResult, SystemError}; use crate::memory::{alloc, build_region, consume_region, Region}; use crate::results::SystemResult; use crate::serde::from_slice; -use crate::traits::{Api, Querier, QuerierResult, ReadonlyStorage, Storage}; +use crate::traits::{Api, QuerierResult, QuerierTrait, ReadonlyStorage, Storage}; #[cfg(feature = "iterator")] use crate::{ iterator::{Order, KV}, @@ -217,7 +217,7 @@ impl ExternalQuerier { } } -impl Querier for ExternalQuerier { +impl QuerierTrait for ExternalQuerier { fn raw_query(&self, bin_request: &[u8]) -> QuerierResult { let req = build_region(bin_request); let request_ptr = &*req as *const Region as u32; diff --git a/packages/std/src/lib.rs b/packages/std/src/lib.rs index 7db3c6bd1..2e5bf69f2 100644 --- a/packages/std/src/lib.rs +++ b/packages/std/src/lib.rs @@ -38,7 +38,7 @@ pub use crate::results::{ }; pub use crate::serde::{from_binary, from_slice, to_binary, to_vec}; pub use crate::storage::MemoryStorage; -pub use crate::traits::{Api, Querier, QuerierResult, QuerierWrapper, ReadonlyStorage, Storage}; +pub use crate::traits::{Api, Querier, QuerierResult, QuerierTrait, ReadonlyStorage, Storage}; pub use crate::types::{BlockInfo, ContractInfo, Empty, Env, MessageInfo}; // Exposed in wasm build only diff --git a/packages/std/src/mock.rs b/packages/std/src/mock.rs index 889370b45..2f6ae1f7c 100644 --- a/packages/std/src/mock.rs +++ b/packages/std/src/mock.rs @@ -14,7 +14,7 @@ use crate::query::{ use crate::results::{ContractResult, SystemResult}; use crate::serde::{from_slice, to_binary}; use crate::storage::MemoryStorage; -use crate::traits::{Api, Querier, QuerierResult}; +use crate::traits::{Api, QuerierResult, QuerierTrait}; use crate::types::{BlockInfo, ContractInfo, Empty, Env, MessageInfo}; pub const MOCK_CONTRACT_ADDR: &str = "cosmos2contract"; @@ -220,7 +220,7 @@ impl MockQuerier { } } -impl Querier for MockQuerier { +impl QuerierTrait for MockQuerier { fn raw_query(&self, bin_request: &[u8]) -> QuerierResult { let request: QueryRequest = match from_slice(bin_request) { Ok(v) => v, diff --git a/packages/std/src/traits.rs b/packages/std/src/traits.rs index bf8314ea5..513ad5987 100644 --- a/packages/std/src/traits.rs +++ b/packages/std/src/traits.rs @@ -81,7 +81,7 @@ pub trait Api { /// A short-hand alias for the two-level query result (1. accessing the contract, 2. executing query in the contract) pub type QuerierResult = SystemResult>; -pub trait Querier { +pub trait QuerierTrait { /// raw_query is all that must be implemented for the Querier. /// This allows us to pass through binary queries from one level to another without /// knowing the custom format, or we can decode it, with the knowledge of the allowed @@ -91,20 +91,18 @@ pub trait Querier { } #[derive(Copy, Clone)] -pub struct QuerierWrapper<'a> { - querier: &'a dyn Querier, -} +pub struct Querier<'a>(&'a dyn QuerierTrait); -impl<'a> QuerierWrapper<'a> { - pub fn new(querier: &'a dyn Querier) -> Self { - QuerierWrapper { querier } +impl<'a> Querier<'a> { + pub fn new(querier: &'a dyn QuerierTrait) -> Self { + Querier(querier) } /// This allows us to pass through binary queries from one level to another without /// knowing the custom format, or we can decode it, with the knowledge of the allowed /// types. You probably want one of the simpler auto-generated helper methods pub fn raw_query(&self, bin_request: &[u8]) -> QuerierResult { - self.querier.raw_query(bin_request) + self.0.raw_query(bin_request) } /// query is a shorthand for custom_query when we are not using a custom type, diff --git a/packages/vm/src/testing/querier.rs b/packages/vm/src/testing/querier.rs index bb04eeba6..2c706d7b7 100644 --- a/packages/vm/src/testing/querier.rs +++ b/packages/vm/src/testing/querier.rs @@ -2,7 +2,7 @@ use serde::de::DeserializeOwned; use cosmwasm_std::testing::{MockQuerier as StdMockQuerier, MockQuerierCustomHandlerResult}; use cosmwasm_std::{ - to_binary, to_vec, Binary, Coin, ContractResult, CustomQuery, Empty, HumanAddr, Querier as _, + to_binary, to_vec, Binary, Coin, ContractResult, CustomQuery, Empty, HumanAddr, QuerierTrait as _, QueryRequest, SystemError, SystemResult, };