use diesel::r2d2::{self, ConnectionManager}; use diesel::PgConnection; use std::env; use dotenvy::dotenv; pub type DbPool = r2d2::Pool>; pub type DbConn = r2d2::PooledConnection>; pub fn establish_connection() -> Result> { dotenv().ok(); let database_url = env::var("DATABASE_URL") .map_err(|_| "DATABASE_URL must be set")?; let manager = ConnectionManager::::new(database_url); let pool = r2d2::Pool::builder() .build(manager) .map_err(|e| format!("Failed to create pool: {}", e))?; Ok(pool) } pub fn get_connection() -> Result> { let pool = establish_connection()?; pool.get().map_err(|e| -> Box { Box::new(e) }) }