summaryrefslogtreecommitdiff
path: root/rust/schist_queries/src/budget_updates.rs
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2024-11-24 15:45:04 +0000
committerJoe Carstairs <me@joeac.net>2024-11-24 15:56:01 +0000
commit1f5dcf9762a83d5972c0c8dbad22732505bf621c (patch)
tree5a1f5edd993733d48016ce2a8a8691b8f446858a /rust/schist_queries/src/budget_updates.rs
parent022795ffcaaa0d904c9f911d8a059885c2254278 (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.rs74
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(", ")
- )
-}