aboutsummaryrefslogtreecommitdiff
path: root/src/app/store
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/store')
-rw-r--r--src/app/store/mod.rs21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/app/store/mod.rs b/src/app/store/mod.rs
index cbec171..5b06eb1 100644
--- a/src/app/store/mod.rs
+++ b/src/app/store/mod.rs
@@ -5,6 +5,8 @@ use miette::{Diagnostic, Result};
use sqlite::SQLiteStore;
use thiserror::Error;
+use records::{EquityChangeEvent, EquitySymbol, FiduciaryAccount};
+
pub enum Context {
SQLite(SQLiteStore),
}
@@ -23,21 +25,34 @@ impl Default for Context {
}
}
+pub struct AppContext {
+ context: Context,
+ accounts: Vec<FiduciaryAccount>,
+ symbols: Vec<EquitySymbol>,
+ events: Vec<EquityChangeEvent>,
+}
+
+impl Default for AppContext {
+ fn default() -> Self {
+ AppContext { context: Context::default(), accounts: vec![], symbols: vec![], events: vec![] }
+ }
+}
+
pub trait Store {
fn init(&mut self) -> Result<(), ContextError>;
fn get_counter(&self) -> Result<u8, ContextError>;
fn set_counter(&mut self, new_count: u8) -> Result<u8, ContextError>;
}
-impl Context {
+impl AppContext {
pub fn unwrap_store(&mut self) -> &mut impl Store {
- match self {
+ match &mut self.context {
Context::SQLite(store) => store,
}
}
pub fn get_store(&self) -> &impl Store {
- match self {
+ match &self.context {
Context::SQLite(store) => store,
}
}