diff options
Diffstat (limited to 'backend/src/routes')
| -rw-r--r-- | backend/src/routes/account.rs | 25 | ||||
| -rw-r--r-- | backend/src/routes/balance.rs | 17 | ||||
| -rw-r--r-- | backend/src/routes/budget.rs | 18 | ||||
| -rw-r--r-- | backend/src/routes/category.rs | 16 | ||||
| -rw-r--r-- | backend/src/routes/mod.rs | 3 |
5 files changed, 62 insertions, 17 deletions
diff --git a/backend/src/routes/account.rs b/backend/src/routes/account.rs index 418ec96..7bbdb4f 100644 --- a/backend/src/routes/account.rs +++ b/backend/src/routes/account.rs @@ -1,24 +1,19 @@ -use diesel::prelude::*; use diesel::result::DatabaseErrorKind; +use rocket::http::Status; use rocket::serde::json::Json; use rocket::{get, post, Responder}; use crate::databases::UserDataDb; use crate::models::account::Account; -use crate::schema::accounts::dsl::accounts; +use crate::queries::accounts::{get_all_accounts as get_all_accounts_query, insert_account}; #[get("/account")] -pub async fn get_all_accounts(user_data_db: UserDataDb) -> Json<Vec<Account>> { +pub async fn get_all_accounts(user_data_db: UserDataDb) -> Result<Json<Vec<Account>>, Status> { user_data_db - .run(|connection| { - Json( - accounts - .select(Account::as_select()) - .load(connection) - .expect("Error getting accounts"), - ) - }) + .run(get_all_accounts_query) .await + .map(Json) + .map_err(|_| Status { code: 500 }) } #[derive(Responder)] @@ -39,14 +34,10 @@ pub async fn create_account( user_data_db: UserDataDb, ) -> CreateAccountResponder { let account = account.into_inner(); - let account_clone = account.clone(); + let accounts_vec = vec![account.clone()]; let num_rows_inserted = user_data_db - .run(|connection| { - diesel::insert_into(accounts) - .values(vec![account_clone]) - .execute(connection) - }) + .run(move |connection| insert_account(&accounts_vec, connection)) .await; match num_rows_inserted { diff --git a/backend/src/routes/balance.rs b/backend/src/routes/balance.rs new file mode 100644 index 0000000..f423c90 --- /dev/null +++ b/backend/src/routes/balance.rs @@ -0,0 +1,17 @@ +use rocket::{get, http::Status, serde::json::Json}; + +use crate::{ + databases::UserDataDb, models::category_balance::CategoryBalance, + queries::category_balances::get_all_category_balances as get_all_category_balances_query, +}; + +#[get("/balance/category")] +pub async fn get_all_category_balances( + user_data_db: UserDataDb, +) -> Result<Json<Vec<CategoryBalance>>, Status> { + user_data_db + .run(get_all_category_balances_query) + .await + .map(Json) + .map_err(|_| Status { code: 500 }) +} diff --git a/backend/src/routes/budget.rs b/backend/src/routes/budget.rs new file mode 100644 index 0000000..024706e --- /dev/null +++ b/backend/src/routes/budget.rs @@ -0,0 +1,18 @@ +use rocket::get; +use rocket::http::Status; +use rocket::serde::json::Json; + +use crate::databases::UserDataDb; +use crate::models::category_budget::CategoryBudget; +use crate::queries; + +#[get("/budget/category")] +pub async fn get_all_category_budgets( + user_data_db: UserDataDb, +) -> Result<Json<Vec<CategoryBudget>>, Status> { + user_data_db + .run(queries::category_budgets::get_all_category_budgets) + .await + .map(Json) + .map_err(|_| Status { code: 500 }) +} diff --git a/backend/src/routes/category.rs b/backend/src/routes/category.rs new file mode 100644 index 0000000..01fd8d1 --- /dev/null +++ b/backend/src/routes/category.rs @@ -0,0 +1,16 @@ +use rocket::get; +use rocket::http::Status; +use rocket::serde::json::Json; + +use crate::databases::UserDataDb; +use crate::models::category::Category; +use crate::queries::categories::get_all_categories as get_all_categories_query; + +#[get("/category")] +pub async fn get_all_categories(user_data_db: UserDataDb) -> Result<Json<Vec<Category>>, Status> { + user_data_db + .run(get_all_categories_query) + .await + .map(Json) + .map_err(|_| Status { code: 500 }) +} diff --git a/backend/src/routes/mod.rs b/backend/src/routes/mod.rs index b0edc6c..1d4408a 100644 --- a/backend/src/routes/mod.rs +++ b/backend/src/routes/mod.rs @@ -1 +1,4 @@ pub mod account; +pub mod balance; +pub mod budget; +pub mod category; |
