abstract_version_control/
migrate.rs1use 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
13pub(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}