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> {
12 let addr = deps.api.addr_validate(self.contract())?;
15 if addr != env.contract.address {
16 return Err(Error::ContractAddrMismatch);
17 }
18
19 SESSION
20 .save(deps.storage, &Session::create(self.nonce()))
21 .map_err(Error::Std)?;
22
23 Ok(Response::new().add_attribute("action", "session_create"))
24 }
25}