use std::fmt;
use crate::types::{BoltDict, BoltValue};
#[derive(Debug, Clone, PartialEq)]
pub enum ServerMessage {
Success { metadata: BoltDict },
Record { data: Vec<BoltValue> },
Failure { metadata: BoltDict },
Ignored,
}
impl fmt::Display for ServerMessage {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Success { .. } => write!(f, "SUCCESS"),
Self::Record { data } => write!(f, "RECORD({} fields)", data.len()),
Self::Failure { metadata } => {
let code = metadata
.get("code")
.and_then(|v| v.as_str())
.unwrap_or("unknown");
write!(f, "FAILURE({code})")
}
Self::Ignored => write!(f, "IGNORED"),
}
}
}