b69c2e1e94
* move stats types from vpn-client to here * base stats api * change storage schema * add link to nymAPI for whitelisting * remove outdated comment * more comments update * example of chrono vs time * Add build.rs - exports DATABASE_URL so cargo check works - exports SQLX_OFFLINE for CI - added pg_up.sh which spawns PG container - required for cargo sqlx prepare * fixes time vs chrono issue and cleaner build with docker * add correct swagger types, with feature locking where relevant * apply dynco suggestions --------- Co-authored-by: dynco-nym <173912580+dynco-nym@users.noreply.github.com>
29 lines
732 B
Rust
29 lines
732 B
Rust
use std::fmt::Display;
|
|
|
|
pub(crate) type HttpResult<T> = Result<T, HttpError>;
|
|
|
|
pub(crate) struct HttpError {
|
|
message: String,
|
|
status: axum::http::StatusCode,
|
|
}
|
|
|
|
impl HttpError {
|
|
pub(crate) fn internal_with_logging(msg: impl Display) -> Self {
|
|
tracing::error!("{}", msg.to_string());
|
|
Self::internal()
|
|
}
|
|
|
|
pub(crate) fn internal() -> Self {
|
|
Self {
|
|
message: serde_json::json!({"message": "Internal server error"}).to_string(),
|
|
status: axum::http::StatusCode::INTERNAL_SERVER_ERROR,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl axum::response::IntoResponse for HttpError {
|
|
fn into_response(self) -> axum::response::Response {
|
|
(self.status, self.message).into_response()
|
|
}
|
|
}
|