atelier/shelves/backend/prelude.rs
2025-02-14 21:28:56 -05:00

49 lines
1.2 KiB
Rust

use std::error::Error;
use std::pin::Pin;
pub use atelier::rusqlite_thread_pool::PoolSender as DbS;
pub type Request = axum::extract::Request;
pub struct RequestCtx {
pub dbs: DbS,
pub path_params: atelier::router::PathParams,
}
pub type Response = axum::response::Response;
pub type Handler = Box<
dyn Fn(
Request,
RequestCtx,
) -> Pin<Box<dyn Future<Output = Response> + Send + 'static>>
+ Send
+ Sync
+ 'static,
>;
pub type Router = atelier::router::Router<Handler>;
pub type AnyError = Box<dyn Error + Send + Sync + 'static>;
pub type Result<T> = core::result::Result<T, AnyError>;
pub use axum::response::IntoResponse;
pub enum HandlerError {
InternalServerError(AnyError),
}
impl<E> From<E> for HandlerError
where
E: Error + Send + Sync + 'static,
{
fn from(v: E) -> Self {
Self::InternalServerError(Box::new(v))
}
}
impl IntoResponse for HandlerError {
fn into_response(self) -> Response {
"".into_response()
}
}
pub type HandlerResult<T: IntoResponse> = core::result::Result<T, HandlerError>;
pub use crate::templates::{template_fn, Template, TemplateFn};
pub use core::fmt::{Display, Formatter};
pub type FmtResult = core::fmt::Result;
pub use axum::response::Html;