From f0e3e0cfb183253e03b1a61ddecb7b9330d47fdb Mon Sep 17 00:00:00 2001 From: Joe Carstairs Date: Tue, 17 Sep 2024 11:28:56 +0100 Subject: Refactors backend --- backend/src/queries/budget_updates/get_all.rs | 13 +++++++++++++ .../src/queries/budget_updates/get_first_with_date.rs | 19 +++++++++++++++++++ .../get_most_recent_with_category_id.rs | 14 ++++++++++++++ backend/src/queries/budget_updates/mod.rs | 7 +++++++ 4 files changed, 53 insertions(+) create mode 100644 backend/src/queries/budget_updates/get_all.rs create mode 100644 backend/src/queries/budget_updates/get_first_with_date.rs create mode 100644 backend/src/queries/budget_updates/get_most_recent_with_category_id.rs create mode 100644 backend/src/queries/budget_updates/mod.rs (limited to 'backend/src/queries/budget_updates') diff --git a/backend/src/queries/budget_updates/get_all.rs b/backend/src/queries/budget_updates/get_all.rs new file mode 100644 index 0000000..97f2f2f --- /dev/null +++ b/backend/src/queries/budget_updates/get_all.rs @@ -0,0 +1,13 @@ +use crate::{ + models::budget_update::BudgetUpdate, + schema::budget_updates::dsl::budget_updates as budget_updates_table, +}; +use diesel::{result::Error, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection}; + +pub fn get_all_budget_updates( + connection: &mut SqliteConnection, +) -> Result, Error> { + budget_updates_table + .select(BudgetUpdate::as_select()) + .load::(connection) +} diff --git a/backend/src/queries/budget_updates/get_first_with_date.rs b/backend/src/queries/budget_updates/get_first_with_date.rs new file mode 100644 index 0000000..a2824be --- /dev/null +++ b/backend/src/queries/budget_updates/get_first_with_date.rs @@ -0,0 +1,19 @@ +use crate::{ + models::budget_update::BudgetUpdate, + schema::budget_updates::{ + self as budget_updates_schema, dsl::budget_updates as budget_updates_table, + }, +}; +use diesel::{ + result::Error, ExpressionMethods, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection, +}; + +pub fn get_first_budget_update_with_date( + date: &str, + connection: &mut SqliteConnection, +) -> Result { + budget_updates_table + .select(BudgetUpdate::as_select()) + .filter(budget_updates_schema::date.eq(date)) + .first(connection) +} diff --git a/backend/src/queries/budget_updates/get_most_recent_with_category_id.rs b/backend/src/queries/budget_updates/get_most_recent_with_category_id.rs new file mode 100644 index 0000000..a52e592 --- /dev/null +++ b/backend/src/queries/budget_updates/get_most_recent_with_category_id.rs @@ -0,0 +1,14 @@ +use crate::schema::budget_updates::{ + self as budget_updates_schema, dsl::budget_updates as budget_updates_table, +}; +use diesel::{dsl::max, result::Error, ExpressionMethods, QueryDsl, RunQueryDsl, SqliteConnection}; + +pub fn get_most_recent_budget_update_date_with_category_id( + category_id: i32, + connection: &mut SqliteConnection, +) -> Result, Error> { + budget_updates_table + .select(max(budget_updates_schema::date)) + .filter(budget_updates_schema::category_id.eq(category_id)) + .first(connection) +} diff --git a/backend/src/queries/budget_updates/mod.rs b/backend/src/queries/budget_updates/mod.rs new file mode 100644 index 0000000..3b514dd --- /dev/null +++ b/backend/src/queries/budget_updates/mod.rs @@ -0,0 +1,7 @@ +mod get_all; +mod get_first_with_date; +mod get_most_recent_with_category_id; + +pub use get_all::get_all_budget_updates; +pub use get_first_with_date::get_first_budget_update_with_date; +pub use get_most_recent_with_category_id::get_most_recent_budget_update_date_with_category_id; -- cgit v1.2.3