mmex_lib 0.1.1-beta.1

Library for interacting with Money Manager EX data and logic
Documentation
use crate::domain::models::{SupportError, SupportRepository};
use crate::infrastructure::repositories::SqlSupportRepository;
use rusqlite::Connection;

pub struct SupportService<'a> {
    conn: &'a Connection,
}

impl<'a> SupportService<'a> {
    pub fn new(conn: &'a Connection) -> Self {
        Self { conn }
    }

    pub fn get_db_version(&self) -> Result<String, SupportError> {
        let repo = SqlSupportRepository::new(self.conn);
        repo.get_metadata("DATAVERSION")?
            .ok_or_else(|| SupportError::NotFound("DATAVERSION".into()))
    }

    pub fn get_setting(&self, name: &str) -> Result<Option<String>, SupportError> {
        let repo = SqlSupportRepository::new(self.conn);
        repo.get_setting(name)
    }

    pub fn set_setting(&self, name: &str, value: &str) -> Result<(), SupportError> {
        let repo = SqlSupportRepository::new(self.conn);
        repo.set_setting(name, value)
    }
}