mmex_lib 0.1.2-beta.1

Library for interacting with Money Manager EX data and logic
Documentation
use crate::MmexError;
use serde::{Deserialize, Serialize};
use thiserror::Error;

#[derive(Error, Debug)]
pub enum SupportError {
    #[error("Support common error: {0}")]
    Common(#[from] MmexError),

    #[error("Metadata or setting not found: {0}")]
    NotFound(String),
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DbMetadata {
    pub name: String,
    pub value: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UserSetting {
    pub name: String,
    pub value: Option<String>,
}

pub trait SupportRepository {
    fn get_metadata(&self, name: &str) -> Result<Option<String>, SupportError>;
    fn get_setting(&self, name: &str) -> Result<Option<String>, SupportError>;
    fn set_setting(&self, name: &str, value: &str) -> Result<(), SupportError>;
}

impl From<SupportError> for MmexError {
    fn from(e: SupportError) -> Self {
        match e {
            SupportError::Common(c) => c,
            _ => MmexError::Internal(e.to_string()),
        }
    }
}