use thiserror::Error;
#[derive(Error, Debug)]
pub enum SessionError {
#[error(transparent)]
IO(#[from] std::io::Error),
#[error(transparent)]
Decode(#[from] base64::DecodeError),
#[error(transparent)]
SerdeJson(#[from] serde_json::error::Error),
#[error(transparent)]
HTTP(#[from] http::Error),
#[error(transparent)]
UUID(#[from] uuid::Error),
#[error(transparent)]
UTF8(#[from] std::string::FromUtf8Error),
#[error(transparent)]
DatabaseError(#[from] crate::DatabaseError),
#[error("unknown Session store error")]
Unknown,
#[error("{0}")]
GenericNotSupportedError(String),
#[error("Session was not found. Either the session was unloaded or was never created.")]
NoSessionError,
#[error(
"The Session Exists but is outdated, either renew it or remove it. \n
Session will get removed on next Session request purge update if no changes are done."
)]
OldSessionError,
#[error("Failed to remove expired session's from database")]
FailedRemoval(String),
}