mycelium_core 0.1.1

Library for Mycelium DDM
Documentation
use std::path::PathBuf;

use crate::{fetch::Fetchable, DbId};
use serde::de::DeserializeOwned;
use uuid;

pub const FILE_NAME: &str = "system.bin";

#[derive(Clone, Serialize, Deserialize)]
pub struct System {
    pub db_id: DbId,
}

impl System {
    #[allow(dead_code)]
    pub fn get_system_id(&self) -> DbId {
        self.db_id
    }
}

impl Fetchable for System {
    fn deserialize_l<T: DeserializeOwned + Default + Fetchable>(
        f_path: &PathBuf,
    ) -> std::io::Result<T> {
        System::deserialize_bin(f_path)
    }

    fn serialize_l(&self) -> std::io::Result<Vec<u8>>
    where
        Self: serde::Serialize + Fetchable,
    {
        self.serialize_bin()
    }
}

impl Default for System {
    fn default() -> System {
        System {
            db_id: *uuid::Uuid::new_v4().as_bytes(),
        }
    }
}