diff options
| author | Joe Carstairs <me@joeac.net> | 2024-10-30 07:27:13 +0000 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2024-10-30 08:50:45 +0000 |
| commit | 828b9ae9f6217f7e5e97ec704134c786dd401bad (patch) | |
| tree | c920b8874682e89ba05b6e1ca20275bfd5878d87 /backend/core/src/queries | |
| parent | 6e9f0069f5d1e4cfbf7f9feb8536795a78c818f6 (diff) | |
Separates date_utc and datetime_utc
Diffstat (limited to 'backend/core/src/queries')
4 files changed, 17 insertions, 12 deletions
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 index 1df3ae2..0d5b2e1 100644 --- a/backend/core/src/queries/budget_updates/get_first_with_date.rs +++ b/backend/core/src/queries/budget_updates/get_first_with_date.rs @@ -1,22 +1,23 @@ use anyhow::{Context, Result}; use crate::{ - models::budget_update::BudgetUpdate, + 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, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection, + ExpressionMethods, OptionalExtension, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection }; pub fn get_first_budget_update_with_date( - date: &str, + date: &DateUtc, connection: &mut SqliteConnection, -) -> Result<BudgetUpdate> { +) -> Result<Option<BudgetUpdate>> { let first_budget_update = budget_updates_table .select(BudgetUpdate::as_select()) - .filter(budget_updates_schema::date.eq(date)) + .filter(budget_updates_schema::date.eq(date.to_string())) .first(connection) - .with_context(|| format!("failed to get first budget update with date {}", date))?; + .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_most_recent_with_category_id.rs b/backend/core/src/queries/budget_updates/get_most_recent_with_category_id.rs index 4e13c50..41ef5ec 100644 --- a/backend/core/src/queries/budget_updates/get_most_recent_with_category_id.rs +++ b/backend/core/src/queries/budget_updates/get_most_recent_with_category_id.rs @@ -1,20 +1,20 @@ use anyhow::{Context, Result}; use crate::{ - models::date_time_utc::DateTimeUtc, + models::date_utc::DateUtc, schema::budget_updates::{ self as budget_updates_schema, dsl::budget_updates as budget_updates_table, - }, + }, traits::nowlike::Nowlike, }; use diesel::{dsl::max, ExpressionMethods, QueryDsl, RunQueryDsl, SqliteConnection}; pub fn get_most_recent_budget_update_date_with_category_id( category_id: i32, connection: &mut SqliteConnection, -) -> Result<Option<String>> { +) -> Result<Option<DateUtc>> { let most_recent_date = budget_updates_table .select(max(budget_updates_schema::date)) .filter(budget_updates_schema::category_id.eq(category_id)) - .filter(budget_updates_schema::date.le(DateTimeUtc::now().to_day_str())) + .filter(budget_updates_schema::date.le(DateUtc::now())) .first(connection) .with_context(|| format!("failed to get most recent budget update date with category ID {}", category_id))?; Ok(most_recent_date) diff --git a/backend/core/src/queries/categories/get_all_balances.rs b/backend/core/src/queries/categories/get_all_balances.rs index da4b0cd..c9a0102 100644 --- a/backend/core/src/queries/categories/get_all_balances.rs +++ b/backend/core/src/queries/categories/get_all_balances.rs @@ -35,7 +35,7 @@ fn get_all_category_balances_without_context( &category_transfer_from_sums, &category_transfer_to_sums, &budget_updates, - ); + )?; balances.push(CategoryBalance { category_id: category.id, diff --git a/backend/core/src/queries/categories/get_most_recent_budget_per_category_id.rs b/backend/core/src/queries/categories/get_most_recent_budget_per_category_id.rs index b8f1a76..fc0a5e1 100644 --- a/backend/core/src/queries/categories/get_most_recent_budget_per_category_id.rs +++ b/backend/core/src/queries/categories/get_most_recent_budget_per_category_id.rs @@ -31,11 +31,15 @@ fn get_most_recent_category_budget_per_category_id_without_context( }); continue; } + let most_recent_budget_update_date = most_recent_budget_update_date.unwrap(); let most_recent_budget_update = get_first_budget_update_with_date( - most_recent_budget_update_date.unwrap().as_str(), + &most_recent_budget_update_date, connection, )?; + // The fact we found the date by getting the most recent budget update + // date guarantees that the Option is Some + let most_recent_budget_update = most_recent_budget_update.unwrap(); budgets.push(CategoryBudget { category_id, |
