abstract_manager/
migrate.rs1use abstract_std::{
2 manager::{
3 state::{AccountInfo, CONFIG, INFO},
4 MigrateMsg,
5 },
6 objects::{gov_type::GovernanceDetails, module_version::assert_contract_upgrade, ownership},
7 MANAGER,
8};
9use cosmwasm_std::{DepsMut, Env};
10use cw2::set_contract_version;
11use cw_storage_plus::Item;
12use semver::Version;
13
14use crate::{
15 commands::ManagerResponse,
16 contract::{ManagerResult, CONTRACT_VERSION},
17};
18
19#[cosmwasm_schema::cw_serde]
21struct AccountInfo0_22 {
22 pub name: String,
23 pub governance_details: GovernanceDetails<String>,
24 pub chain_id: String,
25 pub description: Option<String>,
26 pub link: Option<String>,
27}
28
29const INFO0_22: Item<AccountInfo0_22> = Item::new("\u{0}{4}info");
30
31#[cfg_attr(feature = "export", cosmwasm_std::entry_point)]
32pub fn migrate(mut deps: DepsMut, _env: Env, _msg: MigrateMsg) -> ManagerResult {
33 if let Some(info) = INFO0_22.may_load(deps.storage)? {
36 INFO.save(
38 deps.storage,
39 &AccountInfo {
40 name: info.name,
41 chain_id: info.chain_id,
42 description: info.description,
43 link: info.link,
44 },
45 )?;
46 let config = CONFIG.load(deps.storage)?;
48 ownership::initialize_owner(
49 deps.branch(),
50 info.governance_details,
51 config.version_control_address,
52 )?;
53 }
54
55 let version: Version = CONTRACT_VERSION.parse().unwrap();
56
57 assert_contract_upgrade(deps.storage, MANAGER, version)?;
58 set_contract_version(deps.storage, MANAGER, CONTRACT_VERSION)?;
59 Ok(ManagerResponse::action("migrate"))
60}