diff options
| author | Joe Carstairs <me@joeac.net> | 2024-11-24 15:45:04 +0000 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2024-11-24 15:56:01 +0000 |
| commit | 1f5dcf9762a83d5972c0c8dbad22732505bf621c (patch) | |
| tree | 5a1f5edd993733d48016ce2a8a8691b8f446858a /rust/schist_queries/src/budget_updates.rs | |
| parent | 022795ffcaaa0d904c9f911d8a059885c2254278 (diff) | |
Swaps budget updates for budget drips
Diffstat (limited to 'rust/schist_queries/src/budget_updates.rs')
| -rw-r--r-- | rust/schist_queries/src/budget_updates.rs | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/rust/schist_queries/src/budget_updates.rs b/rust/schist_queries/src/budget_updates.rs deleted file mode 100644 index 07d4808..0000000 --- a/rust/schist_queries/src/budget_updates.rs +++ /dev/null @@ -1,74 +0,0 @@ -use anyhow::{Context, Result}; -use diesel::{dsl::max, ExpressionMethods, OptionalExtension, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection}; -use schist_models::{budget_update::BudgetUpdate, date_utc::DateUtc}; -use schist_schema::schema::budget_updates::{ - self as budget_updates_schema, dsl::budget_updates as budget_updates_table, -}; -use schist_traits::nowlike::Nowlike; - -pub fn delete_all_budget_updates(connection: &mut SqliteConnection) -> Result<usize> { - let num_rows_deleted = diesel::delete(budget_updates_table) - .execute(connection) - .with_context(|| "failed to delete all budget updates")?; - Ok(num_rows_deleted) -} - -pub fn get_all_budget_updates( - connection: &mut SqliteConnection, -) -> Result<Vec<BudgetUpdate>> { - let all_budget_updates = budget_updates_table - .select(BudgetUpdate::as_select()) - .load::<BudgetUpdate>(connection) - .with_context(|| "failed to get all budget updates")?; - Ok(all_budget_updates) -} - -pub fn get_first_budget_update_with_date_and_category_id( - date: &DateUtc, - category_id: i32, - connection: &mut SqliteConnection, -) -> Result<Option<BudgetUpdate>> { - 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) -} - -pub fn get_most_recent_budget_update_date_with_category_id( - category_id: i32, - connection: &mut SqliteConnection, -) -> 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(DateUtc::now())) - .first(connection) - .with_context(|| format!("failed to get most recent budget update date with category ID {}", category_id))?; - Ok(most_recent_date) -} - -pub fn insert_budget_updates( - budget_updates: &[BudgetUpdate], - connection: &mut SqliteConnection, -) -> Result<usize> { - let num_rows_inserted = diesel::insert_into(budget_updates_table) - .values(budget_updates) - .execute(connection) - .with_context(|| insert_err_msg(budget_updates))?; - Ok(num_rows_inserted) -} - -fn insert_err_msg(budget_updates: &[BudgetUpdate]) -> String { - format!( - "failed to insert budget updates: [{}]", - budget_updates - .iter() - .map(|a| a.id.to_string()) - .collect::<Vec<String>>() - .join(", ") - ) -} |
