use std::fmt::Display;
use serde::{Deserialize, Serialize};
use serde_repr::{Deserialize_repr, Serialize_repr};
#[derive(Debug, Deserialize, Serialize, Clone, Default, PartialEq)]
pub struct LogItem {
pub id: i64,
pub message: String,
pub timestamp: i64,
#[serde(rename = "type")]
pub log_type: LogType,
}
#[derive(Debug, Deserialize_repr, Serialize_repr, Clone, Default, PartialEq)]
#[repr(u8)]
pub enum LogType {
#[default]
Normal = 1,
Info = 2,
Warning = 4,
Critical = 8,
}
impl Display for LogType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"{}",
match self {
LogType::Normal => "normal",
LogType::Info => "info",
LogType::Warning => "warning",
LogType::Critical => "critical",
}
)
}
}
#[derive(Debug, Deserialize, Serialize, Clone, Default, PartialEq)]
pub struct LogPeers {
pub id: i64,
pub ip: String,
pub timestamp: i64,
pub blocked: bool,
pub reason: String,
}