use crate::msg::{AddressResponse, ConfigResponse, PortidResponse, SignatureResponse};
use crate::state::{PassportContract, PassportMetadata, ACTIVE, CONFIG, NICKNAMES, PORTID};
use cosmwasm_std::{Deps, StdResult};
use cw721_base::state::TokenInfo;
pub fn query_config(deps: Deps) -> StdResult<ConfigResponse> {
let cfg = CONFIG.load(deps.storage)?;
Ok(ConfigResponse {
owner: cfg.owner.into(),
name_subgraph: cfg.name_subgraph.into(),
avatar_subgraph: cfg.avatar_subgraph.into(),
proof_subgraph: cfg.proof_subgraph.into(),
})
}
pub fn query_metadata_by_nickname(deps: Deps, nickname: String) -> StdResult<PassportMetadata> {
let address_portid = NICKNAMES.load(deps.storage, &nickname)?;
let cw721_contract = PassportContract::default();
let token_info = cw721_contract
.tokens
.load(deps.storage, address_portid.portid.as_str())?;
Ok(token_info.extension)
}
pub fn query_portid_by_nickname(deps: Deps, nickname: String) -> StdResult<PortidResponse> {
let address_portid = NICKNAMES.load(deps.storage, &nickname)?;
let portid = address_portid
.portid
.parse::<u64>()
.map_err(|_| cosmwasm_std::StdError::generic_err("invalid portid format"))?;
Ok(PortidResponse { portid })
}
pub fn query_passport_by_nickname(
deps: Deps,
nickname: String,
) -> StdResult<TokenInfo<PassportMetadata>> {
let address_portid = NICKNAMES.load(deps.storage, &nickname)?;
let cw721_contract = PassportContract::default();
let token_info = cw721_contract
.tokens
.load(deps.storage, address_portid.portid.as_str())?;
Ok(token_info)
}
pub fn query_address_by_nickname(deps: Deps, nickname: String) -> StdResult<AddressResponse> {
let address_portid = NICKNAMES.load(deps.storage, &nickname)?;
Ok(AddressResponse {
address: address_portid.address.into(),
})
}
pub fn query_last_portid(deps: Deps) -> StdResult<PortidResponse> {
let portid = PORTID.load(deps.storage)?;
Ok(PortidResponse {
portid: portid.into(),
})
}
pub fn query_active_passport(
deps: Deps,
address: String,
) -> StdResult<TokenInfo<PassportMetadata>> {
let active = ACTIVE.load(deps.storage, &deps.api.addr_validate(&address)?)?;
let cw721_contract = PassportContract::default();
let token_info = cw721_contract.tokens.load(deps.storage, &active)?;
Ok(token_info)
}
pub fn query_passport_signed(
deps: Deps,
nickname: String,
address: String,
) -> StdResult<SignatureResponse> {
let address_portid = NICKNAMES.load(deps.storage, &nickname)?;
let cw721_contract = PassportContract::default();
let token_info = cw721_contract
.tokens
.load(deps.storage, address_portid.portid.as_str())?;
let result = token_info
.extension
.addresses
.as_ref()
.map_or(false, |addrs| addrs.iter().any(|i| i.address == address));
Ok(SignatureResponse { signed: result })
}
cw-cyber/contracts/cw-cyber-passport/src/query.rs
ฯ 0.0%
use crate;
use crate;
use ;
use TokenInfo;