summaryrefslogtreecommitdiff
path: root/backend/src/routes
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2024-09-17 11:28:56 +0100
committerJoe Carstairs <me@joeac.net>2024-09-17 11:28:56 +0100
commitf0e3e0cfb183253e03b1a61ddecb7b9330d47fdb (patch)
tree722eca369743dcfbb95f1efd58cc4cecc0fb8677 /backend/src/routes
parentc737b6df94eae4981bb03dda3583e24046e24865 (diff)
Refactors backend
Diffstat (limited to 'backend/src/routes')
-rw-r--r--backend/src/routes/account.rs25
-rw-r--r--backend/src/routes/balance.rs17
-rw-r--r--backend/src/routes/budget.rs18
-rw-r--r--backend/src/routes/category.rs16
-rw-r--r--backend/src/routes/mod.rs3
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;