#[cfg(feature = "cookie-session")]
pub mod cookie;
#[cfg(feature = "tower-sessions")]
pub mod tower;
use async_trait::async_trait;
use http::{request::Parts as RequestParts, Extensions, HeaderMap};
use serde_json::Value;
use std::collections::HashMap;
#[derive(Debug, Default, Clone)]
pub struct Flash {
pub errors: HashMap<String, String>,
pub bags: HashMap<String, Value>,
}
impl Flash {
pub fn is_empty(&self) -> bool {
self.errors.is_empty() && self.bags.is_empty()
}
}
#[async_trait]
pub trait SessionStore: Send + Sync {
async fn read_and_clear(&self, req: &RequestParts) -> Flash;
async fn write(&self, headers: &mut HeaderMap, req_extensions: &Extensions, flash: Flash);
}