diff options
Diffstat (limited to 'src/controller/payments.rs')
-rw-r--r-- | src/controller/payments.rs | 101 |
1 files changed, 53 insertions, 48 deletions
diff --git a/src/controller/payments.rs b/src/controller/payments.rs index 8184015..3fa85a5 100644 --- a/src/controller/payments.rs +++ b/src/controller/payments.rs @@ -3,7 +3,6 @@ use hyper::body::Bytes; use hyper::header::CONTENT_TYPE; use hyper::Response; use std::collections::HashMap; -use tera::Context; use crate::controller::utils; use crate::controller::wallet::Wallet; @@ -20,24 +19,25 @@ pub async fn table( query: queries::Payments, ) -> Response<Full<Bytes>> { let page = query.page.unwrap_or(1); - let count = db::payments::count(&wallet.pool, &query).await; + let count = db::payments::count(&wallet.db_conn, &query).await; let payments = - db::payments::list_for_table(&wallet.pool, &query, PER_PAGE).await; + db::payments::list_for_table(&wallet.db_conn, &query, PER_PAGE).await; let max_page = (count.count as f32 / PER_PAGE as f32).ceil() as i64; - let users = db::users::list(&wallet.pool).await; - let categories = db::categories::list(&wallet.pool).await; - - let mut context = Context::new(); - context.insert("header", &templates::Header::Payments); - context.insert("connected_user", &wallet.user); - context.insert("payments", &payments); - context.insert("page", &page); - context.insert("max_page", &max_page); - context.insert("query", &query); - context.insert("count", &count.count); - context.insert("total_cost", &count.total_cost); - context.insert("users", &users); - context.insert("categories", &categories); + let users = db::users::list(&wallet.db_conn).await; + let categories = db::categories::list(&wallet.db_conn).await; + + let context = minijinja::context!( + header => templates::Header::Payments, + connected_user => wallet.user, + payments => payments, + page => page, + max_page => max_page, + query => query, + count => count.count, + total_cost => count.total_cost, + users => users, + categories => categories + ); utils::template( &wallet.assets, @@ -60,17 +60,18 @@ async fn create_form_feedback( form: HashMap<String, String>, error: Option<String>, ) -> Response<Full<Bytes>> { - let users = db::users::list(&wallet.pool).await; - let categories = db::categories::list(&wallet.pool).await; - - let mut context = Context::new(); - context.insert("header", &templates::Header::Payments); - context.insert("connected_user", &wallet.user); - context.insert("users", &users); - context.insert("categories", &categories); - context.insert("query", &query); - context.insert("form", &form); - context.insert("error", &error); + let users = db::users::list(&wallet.db_conn).await; + let categories = db::categories::list(&wallet.db_conn).await; + + let context = minijinja::context!( + header => templates::Header::Payments, + connected_user => wallet.user, + users => users, + categories => categories, + query => query, + form => form, + error => error + ); utils::template( &wallet.assets, @@ -91,10 +92,12 @@ pub async fn create( match validation::payment::create(&form) { Some(create_payment) => { - match db::payments::create(&wallet.pool, &create_payment).await { + match db::payments::create(&wallet.db_conn, create_payment.clone()) + .await + { Some(id) => { let row = db::payments::get_row( - &wallet.pool, + &wallet.db_conn, id, create_payment.frequency, ) @@ -138,20 +141,21 @@ async fn update_form_feedback( form: HashMap<String, String>, error: Option<String>, ) -> Response<Full<Bytes>> { - let payment = db::payments::get_for_form(&wallet.pool, id).await; - let users = db::users::list(&wallet.pool).await; - let categories = db::categories::list(&wallet.pool).await; - - let mut context = Context::new(); - context.insert("header", &templates::Header::Payments); - context.insert("connected_user", &wallet.user); - context.insert("id", &id); - context.insert("payment", &payment); - context.insert("users", &users); - context.insert("categories", &categories); - context.insert("query", &query); - context.insert("form", &form); - context.insert("error", &error); + let payment = db::payments::get_for_form(&wallet.db_conn, id).await; + let users = db::users::list(&wallet.db_conn).await; + let categories = db::categories::list(&wallet.db_conn).await; + + let context = minijinja::context!( + header => templates::Header::Payments, + connected_user => wallet.user, + id => id, + payment => payment, + users => users, + categories => categories, + query => query, + form => form, + error => error + ); utils::template( &wallet.assets, @@ -179,10 +183,10 @@ pub async fn update( match validation::payment::update(&form) { Some(update_payment) => { - if db::payments::update(&wallet.pool, id, &update_payment).await { + if db::payments::update(&wallet.db_conn, id, update_payment).await { let frequency = query.frequency.unwrap_or(Frequency::Punctual); let row = - db::payments::get_row(&wallet.pool, id, frequency).await; + db::payments::get_row(&wallet.db_conn, id, frequency).await; let page = (row - 1) / PER_PAGE + 1; // TODO: keep name, cost, user and category when updating a line let query = queries::Payments { @@ -210,7 +214,7 @@ pub async fn delete( wallet: &Wallet, query: queries::Payments, ) -> Response<Full<Bytes>> { - if db::payments::delete(&wallet.pool, id).await { + if db::payments::delete(&wallet.db_conn, id).await { let query = queries::Payments { highlight: None, ..query @@ -232,7 +236,8 @@ pub async fn search_category( wallet: &Wallet, query: queries::PaymentCategory, ) -> Response<Full<Bytes>> { - match db::payments::search_category(&wallet.pool, query.payment_name).await + match db::payments::search_category(&wallet.db_conn, query.payment_name) + .await { Some(category_id) => utils::with_headers( Response::new(format!("{}", category_id).into()), |