diff options
| author | Joe Carstairs <me@joeac.net> | 2024-12-05 23:14:53 +0000 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2024-12-05 23:14:53 +0000 |
| commit | d7081a6e0c5eed4438f9f3e8950901031bfe70ec (patch) | |
| tree | 7a5ead588edc49685cf2734d0ff5fd8a22c0cd32 /rust/actualbudget_queries/src | |
| parent | 0cf3949a837de984c09448ef0b96e72e9d01af76 (diff) | |
Can get first AB zero budget date
Diffstat (limited to 'rust/actualbudget_queries/src')
| -rw-r--r-- | rust/actualbudget_queries/src/actualbudget_zero_budgets.rs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/rust/actualbudget_queries/src/actualbudget_zero_budgets.rs b/rust/actualbudget_queries/src/actualbudget_zero_budgets.rs index 7366f86..5ae4055 100644 --- a/rust/actualbudget_queries/src/actualbudget_zero_budgets.rs +++ b/rust/actualbudget_queries/src/actualbudget_zero_budgets.rs @@ -1,7 +1,7 @@ use anyhow::{Context, Result}; -use actualbudget_models::ActualbudgetZeroBudget; +use actualbudget_models::{actualbudget_schema::zero_budgets as zero_budgets_schema, ActualbudgetDate, ActualbudgetZeroBudget}; use actualbudget_schema::actualbudget_schema::zero_budgets::dsl::zero_budgets as zero_budgets_table; -use diesel::{QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection}; +use diesel::{dsl::min, result::Error, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection}; pub fn get_all_actualbudget_zero_budgets(connection: &mut SqliteConnection) -> Result<Vec<ActualbudgetZeroBudget>> { let zero_budgets = zero_budgets_table @@ -10,3 +10,11 @@ pub fn get_all_actualbudget_zero_budgets(connection: &mut SqliteConnection) -> R .with_context(|| "failed to get all Actualbudget zero budgets")?; Ok(zero_budgets) } + +pub fn get_first_zero_budget_date(connection: &mut SqliteConnection) -> Result<ActualbudgetDate> { + let date_as_int = zero_budgets_table + .select(min(zero_budgets_schema::month)) + .first::<Option<i32>>(connection) + .map_or_else(|e| Err(e), |o| o.map_or_else(|| Err(Error::NotFound), |i| Ok(i)))?; + Ok(ActualbudgetDate::from_i32(date_as_int)) +} |
