#[cfg(not(feature = "library"))]
use cosmwasm_std::entry_point;
use cosmwasm_std::{to_json_binary, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult};
use cw2::{get_contract_version, set_contract_version};

use crate::execute::{execute_create_entry, execute_update_entry, execute_update_owner};
use crate::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg};
use crate::query::{query_entry, query_list};
use crate::state::LIST;
use hub_base::ContractError;

const CONTRACT_NAME: &str = env!("CARGO_PKG_NAME");
const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION");

pub fn instantiate(
    deps: DepsMut,
    _env: Env,
    info: MessageInfo,
    msg: InstantiateMsg,
) -> Result<Response, ContractError> {
    set_contract_version(deps.storage, CONTRACT_NAME, CONTRACT_VERSION)?;
    let (_config, response) = hub_base::execute::instantiate(deps, info, msg.owner)?;
    Ok(response)
}

#[cfg_attr(not(feature = "library"), entry_point)]
pub fn execute(
    deps: DepsMut,
    env: Env,
    info: MessageInfo,
    msg: ExecuteMsg,
) -> Result<Response, ContractError> {
    match msg {
        ExecuteMsg::UpdateOwner { new_owner } => execute_update_owner(deps, env, info, new_owner),
        ExecuteMsg::CreateEntry {
            address,
            init_particle,
            execute_particle,
            query_particle,
            version,
            chain_id,
            particle,
        } => execute_create_entry(
            deps,
            info,
            address,
            init_particle,
            execute_particle,
            query_particle,
            version,
            chain_id,
            particle,
        ),
        ExecuteMsg::UpdateEntry {
            id,
            address,
            init_particle,
            execute_particle,
            query_particle,
            version,
            chain_id,
            particle,
        } => execute_update_entry(
            deps,
            info,
            id,
            Some(address),
            init_particle,
            execute_particle,
            query_particle,
            version,
            chain_id,
            particle,
        ),
        ExecuteMsg::DeleteEntry { id } => {
            hub_base::execute::execute_delete_entry(deps, info, id, &LIST)
        }
    }
}

#[cfg_attr(not(feature = "library"), entry_point)]
pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult<Binary> {
    match msg {
        QueryMsg::GetEntries { start_after, limit } => {
            to_json_binary(&query_list(deps, start_after, limit)?)
        }
        QueryMsg::GetEntry { id } => to_json_binary(&query_entry(deps, id)?),
    }
}

#[cfg_attr(not(feature = "library"), entry_point)]
pub fn migrate(deps: DepsMut, _env: Env, _msg: MigrateMsg) -> Result<Response, ContractError> {
    let version = get_contract_version(deps.storage)?;
    if version.contract != CONTRACT_NAME {
        return Err(ContractError::CannotMigrate {
            previous_contract: version.contract,
        });
    }
    Ok(Response::default())
}

Dimensions

cw-cyber/contracts/hub-networks/src/contract.rs
cw-cyber/contracts/std-test/src/contract.rs
cw-cyber/contracts/hub-skills/src/contract.rs
cw-cyber/contracts/litium-refer/src/contract.rs
cw-cyber/contracts/cybernet/src/contract.rs
cw-cyber/contracts/litium-mine/src/contract.rs
cw-cyber/contracts/litium-wrap/src/contract.rs
cw-cyber/contracts/litium-stake/src/contract.rs
cw-cyber/contracts/hub-protocols/src/contract.rs
cw-cyber/contracts/cw-cyber-passport/src/contract.rs
cw-cyber/contracts/graph-filter/src/contract.rs
cw-cyber/contracts/cw-cyber-subgraph/src/contract.rs
cw-cyber/contracts/litium-core/src/contract.rs
cw-cyber/contracts/hub-channels/src/contract.rs
cw-cyber/contracts/cw-cyber-gift/src/contract.rs
cw-cyber/contracts/hub-tokens/src/contract.rs

Local Graph