variable_provider/
contract.rs

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