misskey_api/model/
log.rs

1use crate::model::{id::Id, user::User};
2
3use chrono::{DateTime, Utc};
4use serde::{Deserialize, Serialize};
5use thiserror::Error;
6
7#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Copy)]
8#[serde(rename_all = "camelCase")]
9pub enum LogLevel {
10    Error,
11    Warning,
12    Info,
13    Success,
14    Debug,
15}
16
17#[derive(Debug, Error, Clone)]
18#[error("invalid log level")]
19pub struct ParseLogLevelError {
20    _priv: (),
21}
22
23impl std::str::FromStr for LogLevel {
24    type Err = ParseLogLevelError;
25
26    fn from_str(s: &str) -> Result<LogLevel, Self::Err> {
27        match s {
28            "error" | "Error" => Ok(LogLevel::Error),
29            "warning" | "Warning" => Ok(LogLevel::Warning),
30            "info" | "Info" => Ok(LogLevel::Info),
31            "success" | "Success" => Ok(LogLevel::Success),
32            "debug" | "Debug" => Ok(LogLevel::Debug),
33            _ => Err(ParseLogLevelError { _priv: () }),
34        }
35    }
36}
37
38#[derive(Serialize, Deserialize, Debug, Clone)]
39#[serde(rename_all = "camelCase")]
40pub struct Log {
41    pub id: Id<Log>,
42    pub created_at: DateTime<Utc>,
43    pub domain: Vec<String>,
44    pub level: LogLevel,
45    pub worker: String,
46    pub machine: String,
47    pub message: String,
48    pub data: serde_json::Map<String, serde_json::Value>,
49}
50
51impl_entity!(Log);
52
53#[derive(Serialize, Deserialize, Debug, Clone)]
54#[serde(rename_all = "camelCase")]
55pub struct ModerationLog {
56    pub id: Id<ModerationLog>,
57    pub created_at: DateTime<Utc>,
58    pub user_id: Id<User>,
59    pub user: User,
60    #[serde(rename = "type")]
61    pub type_: String,
62    pub info: serde_json::Map<String, serde_json::Value>,
63}
64
65impl_entity!(ModerationLog);