variable_manager/
contract.rs

1use 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}