| 232 | } |
| 233 | |
| 234 | async fn on_ignite(&self, rocket: Rocket<Build>) -> fairing::Result { |
| 235 | let workers: usize = rocket |
| 236 | .figment() |
| 237 | .extract_inner(rocket::Config::WORKERS) |
| 238 | .unwrap_or_else(|_| rocket::Config::default().workers); |
| 239 | |
| 240 | let figment = rocket |
| 241 | .figment() |
| 242 | .focus(&format!("databases.{}", D::NAME)) |
| 243 | .merge(Serialized::default("max_connections", workers * 4)) |
| 244 | .merge(Serialized::default("connect_timeout", 5)) |
| 245 | .merge(Serialized::default("sqlx_logging", true)); |
| 246 | |
| 247 | match <D::Pool>::init(&figment).await { |
| 248 | Ok(pool) => Ok(rocket.manage(D::from(pool))), |
| 249 | Err(e) => { |
| 250 | error!("failed to initialize database: {}", e); |
| 251 | Err(rocket) |
| 252 | } |
| 253 | } |
| 254 | } |
| 255 | } |
| 256 | |
| 257 | #[rocket::async_trait] |