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