1use crate::pool::DbPool;
2use modo::app::AppState;
3use modo::axum::extract::FromRequestParts;
4use modo::axum::http::request::Parts;
5use modo::error::Error;
6
7#[derive(Debug, Clone)]
13pub struct Db(pub DbPool);
14
15impl FromRequestParts<AppState> for Db {
16 type Rejection = Error;
17
18 async fn from_request_parts(
19 _parts: &mut Parts,
20 state: &AppState,
21 ) -> Result<Self, Self::Rejection> {
22 state
23 .services
24 .get::<DbPool>()
25 .map(|pool| Db((*pool).clone()))
26 .ok_or_else(|| {
27 Error::internal(
28 "Database not configured. Register DbPool via app.managed_service(db).",
29 )
30 })
31 }
32}