From 6985874913e895bf4a9540d64c8b88f76bfc4eef Mon Sep 17 00:00:00 2001 From: max funk Date: Tue, 23 Apr 2024 19:42:22 -0700 Subject: [PATCH] create service with ref to db conn --- services/auto-confirm/src/main.rs | 2 +- services/balance-by-account/src/main.rs | 4 +++- services/request-approve/src/main.rs | 4 +++- services/request-by-id/src/main.rs | 4 +++- services/request-create/src/main.rs | 16 +++++++++++----- services/requests-by-account/src/main.rs | 4 +++- services/rule/src/main.rs | 10 +++++----- services/transaction-by-id/src/main.rs | 4 +++- services/transactions-by-account/src/main.rs | 4 +++- 9 files changed, 35 insertions(+), 17 deletions(-) diff --git a/services/auto-confirm/src/main.rs b/services/auto-confirm/src/main.rs index 63179d29..673dd570 100644 --- a/services/auto-confirm/src/main.rs +++ b/services/auto-confirm/src/main.rs @@ -169,7 +169,7 @@ async fn func(event: LambdaEvent) -> Result Result { let client_request = event.0; - let svc = Service::new(pool.get_conn().await); + let conn = pool.get_conn().await; + + let svc = Service::new(&conn); let account = client_request.account_name; diff --git a/services/request-approve/src/main.rs b/services/request-approve/src/main.rs index 697fe66b..f0c218e0 100644 --- a/services/request-approve/src/main.rs +++ b/services/request-approve/src/main.rs @@ -20,7 +20,9 @@ async fn handle_event( ) -> Result, StatusCode> { let client_request = event.0; - let svc = Service::new(pool.get_conn().await); + let conn = pool.get_conn().await; + + let svc = Service::new(&conn); let request_id = client_request.id.parse::().unwrap(); diff --git a/services/request-by-id/src/main.rs b/services/request-by-id/src/main.rs index ecd15f6e..703ff744 100644 --- a/services/request-by-id/src/main.rs +++ b/services/request-by-id/src/main.rs @@ -20,7 +20,9 @@ async fn handle_event( ) -> Result, StatusCode> { let client_request = event.0; - let svc = Service::new(pool.get_conn().await); + let conn = pool.get_conn().await; + + let svc = Service::new(&conn); let request_id = client_request.id.parse::().unwrap(); diff --git a/services/request-create/src/main.rs b/services/request-create/src/main.rs index 5bf3b06a..d7680bef 100644 --- a/services/request-create/src/main.rs +++ b/services/request-create/src/main.rs @@ -6,7 +6,7 @@ use axum::{ }; use httpclient::HttpClient as Client; use pg::postgres::{ConnectionPool, DatabaseConnection, DB}; -use service::Service; +use service::{Service, TxService}; use shutdown::shutdown_signal; use std::{env, error::Error, net::ToSocketAddrs}; use thiserror::Error; @@ -101,9 +101,9 @@ async fn test_values(req: IntraTransaction) -> Result( rule_tested: IntraTransaction, - svc: &mut Service, + svc: &mut TxService<'a, DatabaseConnection>, ) -> Result { let accounts = rule_tested.transaction.transaction_items.list_accounts(); @@ -144,9 +144,11 @@ async fn handle_event( }) .unwrap(); - let mut svc = Service::new(pool.get_conn().await); + let mut tx_conn = pool.get_conn().await; - let inserted_transaction_request = create_request(rule_tested.clone(), &mut svc) + let mut tx_svc = TxService::new(&mut tx_conn); + + let inserted_transaction_request = create_request(rule_tested.clone(), &mut tx_svc) .await .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; @@ -154,6 +156,10 @@ async fn handle_event( let auth_account = rule_tested.clone().auth_account.unwrap(); let approver_role = rule_tested.transaction.author_role.unwrap(); + let conn = pool.get_conn().await; + + let svc = Service::new(&conn); + let approved_transaction_request = svc .approve(auth_account, approver_role, inserted_transaction_request) .await diff --git a/services/requests-by-account/src/main.rs b/services/requests-by-account/src/main.rs index 1df47818..7a831d77 100644 --- a/services/requests-by-account/src/main.rs +++ b/services/requests-by-account/src/main.rs @@ -20,7 +20,9 @@ async fn handle_event( ) -> Result, StatusCode> { let client_request = event.0; - let svc = Service::new(pool.get_conn().await); + let conn = pool.get_conn().await; + + let svc = Service::new(&conn); let account = client_request.account_name; diff --git a/services/rule/src/main.rs b/services/rule/src/main.rs index 9490e949..8d343822 100644 --- a/services/rule/src/main.rs +++ b/services/rule/src/main.rs @@ -21,8 +21,8 @@ mod rules; // used by lambda to test for service availability const READINESS_CHECK_PATH: &str = "READINESS_CHECK_PATH"; -async fn apply_transaction_item_rules( - svc: &Service, +async fn apply_transaction_item_rules<'a>( + svc: &'a Service<'a, DatabaseConnection>, role_sequence: RoleSequence, transaction_items: &TransactionItems, ) -> TransactionItems { @@ -112,8 +112,8 @@ async fn apply_transaction_item_rules( response } -async fn apply_approval_rules( - svc: &Service, +async fn apply_approval_rules<'a>( + svc: &'a Service<'a, DatabaseConnection>, role_sequence: RoleSequence, transaction_items: &mut TransactionItems, approval_time: &TZTime, @@ -206,7 +206,7 @@ async fn apply_rules( let conn = pool.get_conn().await; // create service with conn - let svc = Service::new(conn); + let svc = Service::new(&conn); let mut rule_applied_tr_items = apply_transaction_item_rules(&svc, role_sequence, &transaction_items).await; diff --git a/services/transaction-by-id/src/main.rs b/services/transaction-by-id/src/main.rs index de227652..d13e4d32 100644 --- a/services/transaction-by-id/src/main.rs +++ b/services/transaction-by-id/src/main.rs @@ -20,7 +20,9 @@ async fn handle_event( ) -> Result, StatusCode> { let client_request = event.0; - let svc = Service::new(pool.get_conn().await); + let conn = pool.get_conn().await; + + let svc = Service::new(&conn); let transaction_id = client_request.id.parse::().unwrap(); diff --git a/services/transactions-by-account/src/main.rs b/services/transactions-by-account/src/main.rs index 510e3a4d..dc72794c 100644 --- a/services/transactions-by-account/src/main.rs +++ b/services/transactions-by-account/src/main.rs @@ -20,7 +20,9 @@ async fn handle_event( ) -> Result, StatusCode> { let client_request = event.0; - let svc = Service::new(pool.get_conn().await); + let conn = pool.get_conn().await; + + let svc = Service::new(&conn); let account = client_request.account_name;