blob: 4dc38e854fd07ddadde0acba5a154df31b8135e4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
use actualbudget_models::{ActualbudgetDate, ActualbudgetTransaction};
use actualbudget_schema::actualbudget_schema::v_transactions::{
self as transactions_schema,
dsl::v_transactions as transactions_table,
};
use anyhow::{Context, Result};
use diesel::{dsl::min, result::Error, QueryDsl, RunQueryDsl, SelectableHelper, SqliteConnection};
pub fn get_all_actualbudget_transactions(connection: &mut SqliteConnection) -> Result<Vec<ActualbudgetTransaction>> {
let actualbudget_transactions = transactions_table
.select(ActualbudgetTransaction::as_select())
.load(connection)
.with_context(|| "failed to get all Actualbudget transactions")?;
Ok(actualbudget_transactions)
}
pub fn get_first_actualbudget_transaction_date(connection: &mut SqliteConnection) -> Result<ActualbudgetDate> {
let date_as_int = transactions_table
.select(min(transactions_schema::date))
.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))
}
|