mars_params/
query.rs

1use cosmwasm_std::{Addr, Deps, Order, StdResult};
2use cw_storage_plus::Bound;
3
4use crate::{
5    state::{ASSET_PARAMS, VAULT_CONFIGS},
6    types::{asset::AssetParams, vault::VaultConfig},
7};
8
9pub const DEFAULT_LIMIT: u32 = 10;
10
11pub fn query_all_asset_params(
12    deps: Deps,
13    start_after: Option<String>,
14    limit: Option<u32>,
15) -> StdResult<Vec<AssetParams>> {
16    let start = start_after.as_ref().map(|denom| Bound::exclusive(denom.as_str()));
17    let limit = limit.unwrap_or(DEFAULT_LIMIT) as usize;
18    ASSET_PARAMS
19        .range(deps.storage, start, None, Order::Ascending)
20        .take(limit)
21        .map(|res| Ok(res?.1))
22        .collect()
23}
24
25pub fn query_vault_config(deps: Deps, unchecked: &str) -> StdResult<VaultConfig> {
26    let addr = deps.api.addr_validate(unchecked)?;
27    VAULT_CONFIGS.load(deps.storage, &addr)
28}
29
30pub fn query_all_vault_configs(
31    deps: Deps,
32    start_after: Option<String>,
33    limit: Option<u32>,
34) -> StdResult<Vec<VaultConfig>> {
35    let vault_addr: Addr;
36    let start = match &start_after {
37        Some(unchecked) => {
38            vault_addr = deps.api.addr_validate(unchecked)?;
39            Some(Bound::exclusive(&vault_addr))
40        }
41        None => None,
42    };
43
44    let limit = limit.unwrap_or(DEFAULT_LIMIT) as usize;
45
46    VAULT_CONFIGS
47        .range(deps.storage, start, None, Order::Ascending)
48        .take(limit)
49        .map(|res| Ok(res?.1))
50        .collect()
51}