refactor errors
This commit is contained in:
parent
68dce235c1
commit
06e8494c01
2 changed files with 28 additions and 27 deletions
23
src/error.rs
Normal file
23
src/error.rs
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
use anyhow::anyhow;
|
||||||
|
use axum::{
|
||||||
|
http::StatusCode,
|
||||||
|
response::{IntoResponse, Response},
|
||||||
|
};
|
||||||
|
|
||||||
|
pub struct InternalError(anyhow::Error);
|
||||||
|
|
||||||
|
impl IntoResponse for InternalError {
|
||||||
|
fn into_response(self) -> Response {
|
||||||
|
(
|
||||||
|
StatusCode::INTERNAL_SERVER_ERROR,
|
||||||
|
format!("Something went wrong: {}", self.0),
|
||||||
|
)
|
||||||
|
.into_response()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<sqlx::Error> for InternalError {
|
||||||
|
fn from(value: sqlx::Error) -> Self {
|
||||||
|
InternalError(anyhow!("Database error: {}", value))
|
||||||
|
}
|
||||||
|
}
|
32
src/main.rs
32
src/main.rs
|
@ -1,13 +1,9 @@
|
||||||
mod content;
|
mod content;
|
||||||
|
mod error;
|
||||||
|
|
||||||
use anyhow::{anyhow, Result};
|
use anyhow::Result;
|
||||||
use axum::{
|
use axum::{extract::State, routing::get, Router, Server};
|
||||||
extract::State,
|
use error::InternalError;
|
||||||
http::StatusCode,
|
|
||||||
response::{IntoResponse, Response},
|
|
||||||
routing::get,
|
|
||||||
Router, Server,
|
|
||||||
};
|
|
||||||
use figment::{
|
use figment::{
|
||||||
providers::{Env, Format, Serialized, Toml},
|
providers::{Env, Format, Serialized, Toml},
|
||||||
Figment,
|
Figment,
|
||||||
|
@ -33,29 +29,11 @@ impl Default for Config {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct GenericError(anyhow::Error);
|
|
||||||
|
|
||||||
impl IntoResponse for GenericError {
|
|
||||||
fn into_response(self) -> Response {
|
|
||||||
(
|
|
||||||
StatusCode::INTERNAL_SERVER_ERROR,
|
|
||||||
format!("Something went wrong: {}", self.0),
|
|
||||||
)
|
|
||||||
.into_response()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<sqlx::Error> for GenericError {
|
|
||||||
fn from(value: sqlx::Error) -> Self {
|
|
||||||
GenericError(anyhow!("Database error: {}", value))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct AppState {
|
struct AppState {
|
||||||
database: Pool<Postgres>,
|
database: Pool<Postgres>,
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn root(State(state): State<Arc<AppState>>) -> Result<String, GenericError> {
|
async fn root(State(state): State<Arc<AppState>>) -> Result<String, InternalError> {
|
||||||
let select_query: sqlx::query::QueryAs<'_, _, Page, _> =
|
let select_query: sqlx::query::QueryAs<'_, _, Page, _> =
|
||||||
sqlx::query_as::<_, Page>("SELECT * FROM pages");
|
sqlx::query_as::<_, Page>("SELECT * FROM pages");
|
||||||
let page: Page = select_query.fetch_one(&state.database).await?;
|
let page: Page = select_query.fetch_one(&state.database).await?;
|
||||||
|
|
Loading…
Reference in a new issue