From 5b9aa41283f22988512b4142f7b66b9aa7a04ab3 Mon Sep 17 00:00:00 2001 From: Joe Carstairs Date: Mon, 4 Nov 2024 06:54:05 +0000 Subject: Test & fix get_most_recent_budget_per_category_id query --- .../queries/budget_updates/get_first_with_date.rs | 23 -------------------- .../get_first_with_date_and_category_id.rs | 25 ++++++++++++++++++++++ backend/core/src/queries/budget_updates/mod.rs | 4 ++-- 3 files changed, 27 insertions(+), 25 deletions(-) delete mode 100644 backend/core/src/queries/budget_updates/get_first_with_date.rs create mode 100644 backend/core/src/queries/budget_updates/get_first_with_date_and_category_id.rs (limited to 'backend/core/src/queries/budget_updates') diff --git a/backend/core/src/queries/budget_updates/get_first_with_date.rs b/backend/core/src/queries/budget_updates/get_first_with_date.rs deleted file mode 100644 index 0d5b2e1..0000000 --- a/backend/core/src/queries/budget_updates/get_first_with_date.rs +++ /dev/null @@ -1,23 +0,0 @@ -use anyhow::{Context, Result}; -use crate::{ - models::{budget_update::BudgetUpdate, date_utc::DateUtc}, - schema::budget_updates::{ - self as budget_updates_schema, dsl::budget_updates as budget_updates_table, - }, -}; -use diesel::{ - ExpressionMethods, OptionalExtension, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection -}; - -pub fn get_first_budget_update_with_date( - date: &DateUtc, - connection: &mut SqliteConnection, -) -> Result> { - let first_budget_update = budget_updates_table - .select(BudgetUpdate::as_select()) - .filter(budget_updates_schema::date.eq(date.to_string())) - .first(connection) - .optional() - .with_context(|| format!("failed to get first budget update with date {}", date.to_string()))?; - Ok(first_budget_update) -} diff --git a/backend/core/src/queries/budget_updates/get_first_with_date_and_category_id.rs b/backend/core/src/queries/budget_updates/get_first_with_date_and_category_id.rs new file mode 100644 index 0000000..2d8f97c --- /dev/null +++ b/backend/core/src/queries/budget_updates/get_first_with_date_and_category_id.rs @@ -0,0 +1,25 @@ +use anyhow::{Context, Result}; +use crate::{ + models::{budget_update::BudgetUpdate, date_utc::DateUtc}, + schema::budget_updates::{ + self as budget_updates_schema, dsl::budget_updates as budget_updates_table, + }, +}; +use diesel::{ + ExpressionMethods, OptionalExtension, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection +}; + +pub fn get_first_budget_update_with_date_and_category_id( + date: &DateUtc, + category_id: i32, + connection: &mut SqliteConnection, +) -> Result> { + let first_budget_update = budget_updates_table + .select(BudgetUpdate::as_select()) + .filter(budget_updates_schema::date.eq(date.to_string())) + .filter(budget_updates_schema::category_id.eq(category_id)) + .first(connection) + .optional() + .with_context(|| format!("failed to get first budget update with date {}", date.to_string()))?; + Ok(first_budget_update) +} diff --git a/backend/core/src/queries/budget_updates/mod.rs b/backend/core/src/queries/budget_updates/mod.rs index 337197e..6fc7de0 100644 --- a/backend/core/src/queries/budget_updates/mod.rs +++ b/backend/core/src/queries/budget_updates/mod.rs @@ -1,11 +1,11 @@ mod delete_all; mod get_all; -mod get_first_with_date; +mod get_first_with_date_and_category_id; mod get_most_recent_with_category_id; mod insert; pub use delete_all::delete_all_budget_updates; pub use get_all::get_all_budget_updates; -pub use get_first_with_date::get_first_budget_update_with_date; +pub use get_first_with_date_and_category_id::get_first_budget_update_with_date_and_category_id; pub use get_most_recent_with_category_id::get_most_recent_budget_update_date_with_category_id; pub use insert::insert_budget_updates; -- cgit v1.2.3