variable_manager/
contract.rs1use cosmwasm_std::{
2 entry_point, Addr, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult,
3};
4use rhaki_cw_plus::traits::{IntoAddr, IntoBinaryResult};
5use variable_manager_pkg::{
6 definitions::Config,
7 msgs::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg},
8};
9
10use crate::{
11 execute::{
12 run_register_variable, run_register_variables, run_remove_variable, run_update_owner_msg,
13 run_update_variable, run_update_variables,
14 },
15 query::{qy_get_all_variables, qy_get_variable, qy_get_variables},
16 response::ContractResponse,
17 state::CONFIG,
18};
19
20#[entry_point]
21pub fn instantiate(
22 deps: DepsMut,
23 _env: Env,
24 _info: MessageInfo,
25 msg: InstantiateMsg,
26) -> ContractResponse {
27 CONFIG.save(
28 deps.storage,
29 &Config {
30 owners: msg
31 .owners
32 .iter()
33 .map(|owner| -> StdResult<Addr> { owner.into_addr(deps.api) })
34 .collect::<StdResult<Vec<Addr>>>()?,
35 },
36 )?;
37
38 Ok(Response::new().add_attribute("owners", format!("{:?}", msg.owners)))
39}
40
41#[entry_point]
42pub fn execute(deps: DepsMut, _env: Env, info: MessageInfo, msg: ExecuteMsg) -> ContractResponse {
43 CONFIG.load(deps.storage)?.validate_owner(&info.sender)?;
44 match msg {
45 ExecuteMsg::RegisterVariable(msg) => run_register_variable(deps, msg),
46 ExecuteMsg::RegisterVariables(msgs) => run_register_variables(deps, msgs),
47 ExecuteMsg::RemoveVariable(msg) => run_remove_variable(deps, msg),
48 ExecuteMsg::UpdateOwners(msg) => run_update_owner_msg(deps, msg),
49 ExecuteMsg::UpdateVariable(msg) => run_update_variable(deps, msg),
50 ExecuteMsg::UpdateVariables(msgs) => run_update_variables(deps, msgs),
51 }
52}
53
54#[entry_point]
55pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult<Binary> {
56 match msg {
57 QueryMsg::GetVariable { key } => qy_get_variable(deps, key).into_binary(),
58 QueryMsg::GetVariables { keys } => qy_get_variables(deps, keys).into_binary(),
59 QueryMsg::AllVariables { start_after, limit } => {
60 qy_get_all_variables(deps, start_after, limit).into_binary()
61 }
62 QueryMsg::Config {} => CONFIG.load(deps.storage).into_binary(),
63 }
64}
65
66#[entry_point]
67pub fn migrate(_deps: DepsMut, _env: Env, _msg: MigrateMsg) -> ContractResponse {
68 Ok(Response::new())
69}