tackler_core/kernel/
report_settings.rs1use crate::config::Scale;
6use crate::kernel::Settings;
7use crate::kernel::price_lookup::PriceLookup;
8use crate::model::Commodity;
9use crate::tackler;
10use jiff::tz::TimeZone;
11use std::sync::Arc;
12use tackler_api::txn_ts::{GroupBy, TimestampStyle};
13
14#[derive(Debug, Clone)]
15pub struct BalanceSettings {
16 pub(crate) title: String,
17 pub(crate) ras: Vec<String>,
18 pub(crate) scale: Scale,
19 pub(crate) report_commodity: Option<Arc<Commodity>>,
20 pub(crate) price_lookup: PriceLookup,
21}
22
23impl TryFrom<&Settings> for BalanceSettings {
24 type Error = tackler::Error;
25
26 fn try_from(settings: &Settings) -> Result<Self, Self::Error> {
27 Ok(BalanceSettings {
28 title: settings.report.balance.title.clone(),
29 ras: settings.get_balance_ras(),
30 scale: settings.report.scale.clone(),
31 report_commodity: settings.get_report_commodity(),
32 price_lookup: settings.get_price_lookup(),
33 })
34 }
35}
36
37#[derive(Debug, Clone)]
38pub struct BalanceGroupSettings {
39 pub title: String,
40 pub ras: Vec<String>,
41 pub group_by: GroupBy,
42 pub report_tz: TimeZone,
43 pub report_commodity: Option<Arc<Commodity>>,
44 pub price_lookup: PriceLookup,
45 pub scale: Scale,
46}
47
48impl TryFrom<&Settings> for BalanceGroupSettings {
49 type Error = tackler::Error;
50
51 fn try_from(settings: &Settings) -> Result<Self, Self::Error> {
52 let bgs = BalanceGroupSettings {
53 title: settings.report.balance_group.title.clone(),
54 ras: settings.get_balance_group_ras(),
55 group_by: settings.report.balance_group.group_by,
56 report_tz: settings.report.report_tz.clone(),
57 report_commodity: settings.get_report_commodity(),
58 price_lookup: settings.get_price_lookup(),
59 scale: settings.report.scale.clone(),
60 };
61 Ok(bgs)
62 }
63}
64
65#[derive(Debug, Clone)]
66pub struct RegisterSettings {
67 pub title: String,
68 pub ras: Vec<String>,
69 pub report_tz: TimeZone,
70 pub report_commodity: Option<Arc<Commodity>>,
71 pub price_lookup: PriceLookup,
72 pub timestamp_style: TimestampStyle,
73 pub(crate) scale: Scale,
74}
75
76impl TryFrom<&Settings> for RegisterSettings {
77 type Error = tackler::Error;
78
79 fn try_from(settings: &Settings) -> Result<RegisterSettings, tackler::Error> {
80 let rs = RegisterSettings {
81 title: settings.report.register.title.clone(),
82 ras: settings.get_register_ras(),
83 report_tz: settings.report.report_tz.clone(),
84 report_commodity: settings.get_report_commodity(),
85 price_lookup: settings.get_price_lookup(),
86 timestamp_style: settings.report.register.timestamp_style,
87 scale: settings.report.scale.clone(),
88 };
89 Ok(rs)
90 }
91}