use derive_more::derive::From;
use serde::Serialize;
pub type Result<T> = core::result::Result<T, Error>;
#[derive(Debug, From)]
pub enum Error {
#[from]
NewSession(charybdis::scylla::errors::NewSessionError),
#[from]
Prepare(charybdis::scylla::errors::PrepareError),
#[from]
Execution(charybdis::scylla::errors::ExecutionError),
#[from]
IntoRows(charybdis::scylla::errors::IntoRowsResultError),
#[from]
Rows(charybdis::scylla::errors::RowsError),
#[from]
Deserialization(charybdis::scylla::errors::DeserializationError),
#[from]
UseKeyspace(charybdis::scylla::errors::UseKeyspaceError),
#[from]
Charybdis(charybdis::errors::CharybdisError),
}
impl Serialize for Error {
fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
match self {
Error::NewSession(new_session_error) => {
serializer.serialize_str(&new_session_error.to_string())
}
Error::Prepare(prepare_error) => {
serializer.serialize_str(&prepare_error.to_string())
}
Error::Execution(execution_error) => {
serializer.serialize_str(&execution_error.to_string())
}
Error::IntoRows(into_rows_error) => {
serializer.serialize_str(&into_rows_error.to_string())
}
Error::Rows(rows_error) => {
serializer.serialize_str(&rows_error.to_string())
}
Error::Deserialization(deserialization_error) => {
serializer.serialize_str(&deserialization_error.to_string())
}
Error::UseKeyspace(use_keyspace_error) => {
serializer.serialize_str(&use_keyspace_error.to_string())
}
Error::Charybdis(charybdis_error) => {
serializer.serialize_str(&charybdis_error.to_string())
}
}
}
}
impl core::fmt::Display for Error {
fn fmt(&self, fmt: &mut core::fmt::Formatter) -> core::result::Result<(), core::fmt::Error> {
write!(fmt, "{self:?}")
}
}
impl std::error::Error for Error {}