terp_code_controllers/
init.rs

1use cosmwasm_schema::cw_serde;
2use cosmwasm_std::{Addr, Binary, WasmMsg};
3
4#[cw_serde]
5pub enum Admin {
6    Address { addr: String },
7    Creator {},
8}
9
10#[cw_serde]
11pub struct ContractInstantiateMsg {
12    pub code_id: u64,
13    pub msg: Binary,
14    pub admin: Option<Admin>,
15    pub label: String,
16}
17
18impl ContractInstantiateMsg {
19    pub fn into_wasm_msg(self, creator: Addr) -> WasmMsg {
20        WasmMsg::Instantiate {
21            admin: self.admin.map(|admin| match admin {
22                Admin::Address { addr } => addr,
23                Admin::Creator {} => creator.into_string(),
24            }),
25            code_id: self.code_id,
26            msg: self.msg,
27            label: self.label,
28            funds: vec![],
29        }
30    }
31}