abstract_app/endpoints/
execute.rs1use abstract_sdk::base::ModuleIbcEndpoint;
2use abstract_std::app::{AppExecuteMsg, BaseExecuteMsg, ExecuteMsg};
3use cosmwasm_std::{DepsMut, Env, MessageInfo, Response};
4use schemars::JsonSchema;
5use serde::Serialize;
6
7use crate::{
8 state::{AppContract, ContractError},
9 AppError, AppResult, ExecuteEndpoint, Handler, IbcCallbackEndpoint,
10};
11
12impl<
13 Error: From<cosmwasm_std::StdError>
14 + From<AppError>
15 + From<abstract_sdk::AbstractSdkError>
16 + From<abstract_std::AbstractError>
17 + 'static,
18 CustomInitMsg,
19 CustomExecMsg: Serialize + JsonSchema + AppExecuteMsg,
20 CustomQueryMsg,
21 CustomMigrateMsg,
22 SudoMsg,
23 > ExecuteEndpoint
24 for AppContract<Error, CustomInitMsg, CustomExecMsg, CustomQueryMsg, CustomMigrateMsg, SudoMsg>
25{
26 type ExecuteMsg = ExecuteMsg<CustomExecMsg>;
27
28 fn execute(
29 self,
30 deps: DepsMut,
31 env: Env,
32 info: MessageInfo,
33 msg: Self::ExecuteMsg,
34 ) -> Result<Response, Error> {
35 match msg {
36 ExecuteMsg::Module(request) => self.execute_handler()?(deps, env, info, self, request),
37 ExecuteMsg::Base(exec_msg) => self
38 .base_execute(deps, env, info, exec_msg)
39 .map_err(From::from),
40 ExecuteMsg::IbcCallback(msg) => self.ibc_callback(deps, env, info, msg),
41 ExecuteMsg::ModuleIbc(msg) => self.module_ibc(deps, env, info, msg),
42 }
43 }
44}
45
46impl<
47 Error: ContractError,
48 CustomInitMsg,
49 CustomExecMsg,
50 CustomQueryMsg,
51 CustomMigrateMsg,
52 SudoMsg,
53 > AppContract<Error, CustomInitMsg, CustomExecMsg, CustomQueryMsg, CustomMigrateMsg, SudoMsg>
54{
55 fn base_execute(
56 &self,
57 _deps: DepsMut,
58 _env: Env,
59 _info: MessageInfo,
60 _message: BaseExecuteMsg,
61 ) -> AppResult {
62 unreachable!("App BaseExecuteMsg could not be constructed")
63 }
64}