quartz_contract_core/handler/execute/
session_create.rs1use cosmwasm_std::{DepsMut, Env, MessageInfo, Response};
2
3use crate::{
4 error::Error,
5 handler::Handler,
6 msg::execute::session_create::SessionCreate,
7 state::{Session, SESSION},
8};
9
10impl Handler for SessionCreate {
11 fn handle(self, deps: DepsMut<'_>, env: &Env, _info: &MessageInfo) -> Result<Response, Error> {
13 let addr = deps.api.addr_validate(self.contract())?;
17 if addr != env.contract.address {
18 return Err(Error::ContractAddrMismatch);
19 }
20
21 SESSION
23 .save(deps.storage, &Session::create(self.nonce()))
24 .map_err(Error::Std)?;
25
26 Ok(Response::new().add_attribute("action", "session_create"))
27 }
28}