diff options
Diffstat (limited to 'src/app/store/mod.rs')
| -rw-r--r-- | src/app/store/mod.rs | 21 |
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, } } |
