abstract_version_control/
migrate.rs

1use abstract_std::{
2    objects::module_version::assert_cw_contract_upgrade,
3    version_control::{state::CONFIG, Config, MigrateMsg},
4    VERSION_CONTROL,
5};
6
7use cosmwasm_std::{DepsMut, Env};
8use cw_semver::Version;
9use cw_storage_plus::Item;
10
11use crate::contract::{VCResult, VcResponse, CONTRACT_VERSION};
12
13// Old config was using same key as `MODULE_CONFIG`, now it's `config` instead of `cfg`
14pub(crate) const CONFIG0_22: Item<Config> = Item::new("cfg");
15
16#[cfg_attr(feature = "export", cosmwasm_std::entry_point)]
17pub fn migrate(deps: DepsMut, _env: Env, _msg: MigrateMsg) -> VCResult {
18    let to_version: Version = CONTRACT_VERSION.parse()?;
19
20    if let Ok(old_config) = CONFIG0_22.load(deps.storage) {
21        CONFIG.save(deps.storage, &old_config)?;
22        CONFIG0_22.remove(deps.storage);
23    }
24
25    assert_cw_contract_upgrade(deps.storage, VERSION_CONTROL, to_version)?;
26    cw2::set_contract_version(deps.storage, VERSION_CONTROL, CONTRACT_VERSION)?;
27    Ok(VcResponse::action("migrate"))
28}