diff --git a/src/app/api/users.rs b/src/app/api/users.rs index 5096e66..cb8e40a 100644 --- a/src/app/api/users.rs +++ b/src/app/api/users.rs @@ -1,5 +1,6 @@ use crate::app::db::DbPool; use crate::app::error::AppError; +use crate::app::lib::helpers::get_connection; use crate::app::models::*; use crate::schema::users; use actix_web::{get, post, web, HttpResponse, Responder, Result}; @@ -8,11 +9,7 @@ use diesel::prelude::*; #[get("/users")] pub async fn list(db_pool: web::Data) -> Result { - let mut con = db_pool.get().map_err(|e| { - AppError::new(500) - .cause(e) - .message("Failed to load database") - })?; + let mut con = get_connection(db_pool)?; let query_result = users::table .load::(&mut *con) @@ -26,11 +23,7 @@ pub async fn create( db_pool: web::Data, user: web::Json, ) -> Result { - let mut con = db_pool.get().map_err(|e| { - AppError::new(500) - .cause(e) - .message("Failed to load database") - })?; + let mut con = get_connection(db_pool)?; let query_result = insert_into(users::table) .values(( diff --git a/src/app/db/mod.rs b/src/app/db/mod.rs index 658964d..ed6f534 100644 --- a/src/app/db/mod.rs +++ b/src/app/db/mod.rs @@ -3,6 +3,7 @@ use diesel::r2d2::ConnectionManager; use r2d2::Pool; pub type DbPool = r2d2::Pool>; +pub type DbPooledConnection = r2d2::PooledConnection>; pub fn get_connection_pool() -> DbPool { let database_url: String = crate::app::config::get("database_url"); diff --git a/src/app/lib/helpers.rs b/src/app/lib/helpers.rs new file mode 100644 index 0000000..bd05d83 --- /dev/null +++ b/src/app/lib/helpers.rs @@ -0,0 +1,11 @@ +use crate::app::db::{DbPool, DbPooledConnection}; +use crate::app::error::AppError; +use actix_web::web; + +pub fn get_connection(db_pool: web::Data) -> Result { + db_pool.get().map_err(|e| { + AppError::new(500) + .cause(e) + .message("Failed to load database") + }) +} diff --git a/src/app/lib/mod.rs b/src/app/lib/mod.rs new file mode 100644 index 0000000..1630fab --- /dev/null +++ b/src/app/lib/mod.rs @@ -0,0 +1 @@ +pub mod helpers; diff --git a/src/app/mod.rs b/src/app/mod.rs index 080690e..4a90cdd 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -3,6 +3,7 @@ pub mod config; pub mod db; pub mod error; pub mod init; +pub mod lib; pub mod route; pub mod models {