use cosmwasm_std::{attr, DepsMut, Env, MessageInfo, StdResult, SubMsg};
use crate::contract::map_validate;
use crate::error::ContractError;
use crate::state::CONFIG;
use cyber_std::types::Link;
use cyber_std::CyberMsg;
type Response = cosmwasm_std::Response<CyberMsg>;
pub const CYBERLINK_ID_MSG: u64 = 42;
pub fn execute_update_admins(
deps: DepsMut,
_env: Env,
info: MessageInfo,
new_admins: Vec<String>,
) -> Result<Response, ContractError> {
let cfg = CONFIG.load(deps.storage)?;
if !cfg.can_modify(info.sender.as_ref()) {
return Err(ContractError::Unauthorized {});
}
let admins = map_validate(deps.api, &new_admins)?;
CONFIG.update(deps.storage, |mut cfg| -> StdResult<_> {
cfg.admins = admins;
Ok(cfg)
})?;
Ok(Response::new().add_attributes(vec![attr("action", "update_admins")]))
}
pub fn execute_update_executors(
deps: DepsMut,
_env: Env,
info: MessageInfo,
new_executors: Vec<String>,
) -> Result<Response, ContractError> {
let cfg = CONFIG.load(deps.storage)?;
if !cfg.can_modify(info.sender.as_ref()) {
return Err(ContractError::Unauthorized {});
}
let executors = map_validate(deps.api, &new_executors)?;
CONFIG.update(deps.storage, |mut cfg| -> StdResult<_> {
cfg.executors = executors;
Ok(cfg)
})?;
Ok(Response::new().add_attributes(vec![attr("action", "update_executors")]))
}
pub fn execute_cyberlink(
deps: DepsMut,
env: Env,
info: MessageInfo,
cyberlink: Vec<Link>,
) -> Result<Response, ContractError> {
let cfg = CONFIG.load(deps.storage)?;
if !cfg.can_execute(info.sender.as_ref()) {
return Err(ContractError::Unauthorized {});
}
let msg = CyberMsg::cyberlink(env.contract.address.to_string(), cyberlink);
Ok(Response::new().add_submessage(SubMsg::reply_on_error(msg, CYBERLINK_ID_MSG)))
}
cw-cyber/contracts/cw-cyber-subgraph/src/execute.rs
ฯ 0.0%
use ;
use cratemap_validate;
use crateContractError;
use crateCONFIG;
use Link;
use CyberMsg;
type Response = Response;
pub const CYBERLINK_ID_MSG: u64 = 42;