quartz_contract_core/handler/execute/
session_create.rs

1use 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        // TODO(hu55a1n1): overwrite previous session?
13
14        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}