use crate::error::{Error, ProtocolError, ServerError};
use crate::protocol::{ErrorResponse, Response};
pub(crate) fn unexpected(response: &Response) -> Error {
Error::from(ProtocolError::UnknownResponseType(format!(
"unexpected variant: {response:?}"
)))
}
pub(crate) fn server_error(e: ErrorResponse) -> Error {
Error::from(ServerError {
message: e
.error
.unwrap_or_else(|| "daemon returned error response with no message".to_string()),
sqlstate: e.sqlstate,
sqlcode: e.sqlcode,
job_name: e.job,
diagnostics: vec![],
})
}
pub(crate) fn server_failed(method: &str) -> Error {
Error::from(ServerError {
message: format!("daemon returned success=false for {method}"),
sqlstate: None,
sqlcode: None,
job_name: None,
diagnostics: vec![],
})
}
pub(crate) fn spawn_best_effort<F>(future: F)
where
F: std::future::Future<Output = ()> + Send + 'static,
{
if let Ok(rt) = tokio::runtime::Handle::try_current() {
rt.spawn(future);
}
}