summaryrefslogtreecommitdiff
path: root/backend/app/src/queries/budget_updates
diff options
context:
space:
mode:
Diffstat (limited to 'backend/app/src/queries/budget_updates')
-rw-r--r--backend/app/src/queries/budget_updates/get_all.rs13
-rw-r--r--backend/app/src/queries/budget_updates/get_first_with_date.rs19
-rw-r--r--backend/app/src/queries/budget_updates/get_most_recent_with_category_id.rs18
-rw-r--r--backend/app/src/queries/budget_updates/mod.rs7
4 files changed, 57 insertions, 0 deletions
diff --git a/backend/app/src/queries/budget_updates/get_all.rs b/backend/app/src/queries/budget_updates/get_all.rs
new file mode 100644
index 0000000..97f2f2f
--- /dev/null
+++ b/backend/app/src/queries/budget_updates/get_all.rs
@@ -0,0 +1,13 @@
+use crate::{
+ models::budget_update::BudgetUpdate,
+ schema::budget_updates::dsl::budget_updates as budget_updates_table,
+};
+use diesel::{result::Error, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection};
+
+pub fn get_all_budget_updates(
+ connection: &mut SqliteConnection,
+) -> Result<Vec<BudgetUpdate>, Error> {
+ budget_updates_table
+ .select(BudgetUpdate::as_select())
+ .load::<BudgetUpdate>(connection)
+}
diff --git a/backend/app/src/queries/budget_updates/get_first_with_date.rs b/backend/app/src/queries/budget_updates/get_first_with_date.rs
new file mode 100644
index 0000000..a2824be
--- /dev/null
+++ b/backend/app/src/queries/budget_updates/get_first_with_date.rs
@@ -0,0 +1,19 @@
+use crate::{
+ models::budget_update::BudgetUpdate,
+ schema::budget_updates::{
+ self as budget_updates_schema, dsl::budget_updates as budget_updates_table,
+ },
+};
+use diesel::{
+ result::Error, ExpressionMethods, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection,
+};
+
+pub fn get_first_budget_update_with_date(
+ date: &str,
+ connection: &mut SqliteConnection,
+) -> Result<BudgetUpdate, Error> {
+ budget_updates_table
+ .select(BudgetUpdate::as_select())
+ .filter(budget_updates_schema::date.eq(date))
+ .first(connection)
+}
diff --git a/backend/app/src/queries/budget_updates/get_most_recent_with_category_id.rs b/backend/app/src/queries/budget_updates/get_most_recent_with_category_id.rs
new file mode 100644
index 0000000..4753092
--- /dev/null
+++ b/backend/app/src/queries/budget_updates/get_most_recent_with_category_id.rs
@@ -0,0 +1,18 @@
+use crate::{
+ models::date_time_utc::DateTimeUtc,
+ schema::budget_updates::{
+ self as budget_updates_schema, dsl::budget_updates as budget_updates_table,
+ },
+};
+use diesel::{dsl::max, result::Error, ExpressionMethods, QueryDsl, RunQueryDsl, SqliteConnection};
+
+pub fn get_most_recent_budget_update_date_with_category_id(
+ category_id: i32,
+ connection: &mut SqliteConnection,
+) -> Result<Option<String>, Error> {
+ 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()))
+ .first(connection)
+}
diff --git a/backend/app/src/queries/budget_updates/mod.rs b/backend/app/src/queries/budget_updates/mod.rs
new file mode 100644
index 0000000..3b514dd
--- /dev/null
+++ b/backend/app/src/queries/budget_updates/mod.rs
@@ -0,0 +1,7 @@
+mod get_all;
+mod get_first_with_date;
+mod get_most_recent_with_category_id;
+
+pub use get_all::get_all_budget_updates;
+pub use get_first_with_date::get_first_budget_update_with_date;
+pub use get_most_recent_with_category_id::get_most_recent_budget_update_date_with_category_id;