summaryrefslogtreecommitdiff
path: root/rust/actualbudget_queries/tests/common/get_reference_data.rs
blob: d317a005ca9ae6e6720a4fa5fbfb0356f278e317 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use std::collections::HashMap;

use actualbudget_models::{actualbudget_account::ActualbudgetAccount, actualbudget_category::ActualbudgetCategory};
use actualbudget_queries::{actualbudget_accounts::get_all_actualbudget_accounts, actualbudget_categories::get_all_actualbudget_categories, actualbudget_transactions::{get_all_actualbudget_transactions, get_first_actualbudget_transaction_date}};
use diesel::SqliteConnection;

use super::{account_names::ACCOUNT_NAMES, category_names::CATEGORY_NAMES};

pub fn get_accounts(connection: &mut SqliteConnection) -> HashMap<String, ActualbudgetAccount> {
    let accounts = get_all_actualbudget_accounts(connection).expect("failed to get accounts");
    let mut accounts_hash_map = HashMap::new();

    for &account_name in ACCOUNT_NAMES {
        let account = accounts
            .clone()
            .into_iter()
            .find(|a| a.name.as_str() == account_name)
            .expect(&format!("failed to get account: {}", account_name));
        accounts_hash_map.insert(
            String::from(account_name),
            account,
        );
    }

    accounts_hash_map
}

pub fn get_categories(connection: &mut SqliteConnection) -> HashMap<String, ActualbudgetCategory> {
    let categories = get_all_actualbudget_categories(connection).expect("failed to get categories");
    let mut categories_hash_map = HashMap::new();

    for &category_name in CATEGORY_NAMES {
        let category = categories
            .clone()
            .into_iter()
            .find(|a| a.name.as_str() == category_name)
            .expect(&format!("failed to get category: {}", category_name));
        categories_hash_map.insert(
            String::from(category_name),
            category,
        );
    }

    categories_hash_map
}