melodium-common 0.10.1

Common Mélodium elements and traits
Documentation
use chrono::{DateTime, Utc};
use core::fmt::{Debug, Display};
use serde::{Deserialize, Serialize};
use uuid::Uuid;

#[derive(Debug, Serialize, Deserialize, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub enum Level {
    Error,
    Warning,
    Info,
    Debug,
    Trace,
}

impl Display for Level {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            Level::Error => write!(f, "error"),
            Level::Warning => write!(f, "warning"),
            Level::Info => write!(f, "info"),
            Level::Debug => write!(f, "debug"),
            Level::Trace => write!(f, "trace"),
        }
    }
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct Log {
    pub timestamp: DateTime<Utc>,
    pub level: Level,
    pub label: String,
    pub message: String,
    pub track_id: Option<usize>,
    pub run_id: Option<Uuid>,
    pub group_id: Option<Uuid>,
}