use async_trait::async_trait;
use bamboo_domain::Session;
use super::errors::{SessionLoadError, SessionSaveError};
#[async_trait]
pub trait SessionAccess: Send + Sync {
async fn load_session(&self, id: &str) -> Result<Option<Session>, SessionLoadError>;
async fn load_or_create(&self, id: &str, model: &str) -> Result<Session, SessionLoadError>;
async fn load_merged(&self, id: &str) -> Result<Option<Session>, SessionLoadError>;
async fn save_session(&self, session: &Session) -> Result<(), SessionSaveError>;
async fn save_and_cache(&self, session: &Session) -> Result<(), SessionSaveError>;
}