use std::str::FromStr; use diesel::pg::PgConnection; use diesel::r2d2::ConnectionManager; use diesel::r2d2::Pool; pub type DbPool = Pool>; pub fn establish_connection() -> DbPool { let database_url = std::env::var("DATABASE_URL") .expect("DATABASE_URL must be set"); let pool_max_size = std::env::var("DATABASE_MAX_CONNECTIONS") .as_ref() .map(|s| u32::from_str(s)) .expect("DATABASE_URL must be set") .expect("Failed to parse string into integer for DATABASE_MAX_CONNECTIONS"); let manager = diesel::r2d2::ConnectionManager::new(&database_url); diesel::r2d2::Pool::builder() .max_size(pool_max_size) .build(manager) .expect(&format!("Error connection to {}", database_url)) }