use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct TriggerHistoryEntry {
#[serde(rename = "id")]
pub id: i64,
#[serde(rename = "trigger_kind")]
pub trigger_kind: String,
#[serde(rename = "path")]
pub path: String,
#[serde(rename = "operation")]
pub operation: Operation,
#[serde(rename = "source")]
pub source: Source,
#[serde(rename = "username", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub username: Option<Option<String>>,
#[serde(rename = "created_at")]
pub created_at: String,
#[serde(rename = "changes", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub changes: Option<Option<std::collections::HashMap<String, serde_json::Value>>>,
}
impl TriggerHistoryEntry {
pub fn new(id: i64, trigger_kind: String, path: String, operation: Operation, source: Source, created_at: String) -> TriggerHistoryEntry {
TriggerHistoryEntry {
id,
trigger_kind,
path,
operation,
source,
username: None,
created_at,
changes: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Operation {
#[serde(rename = "create")]
Create,
#[serde(rename = "update")]
Update,
#[serde(rename = "delete")]
Delete,
#[serde(rename = "enable")]
Enable,
#[serde(rename = "disable")]
Disable,
#[serde(rename = "suspend")]
Suspend,
}
impl Default for Operation {
fn default() -> Operation {
Self::Create
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Source {
#[serde(rename = "ui")]
Ui,
#[serde(rename = "cli")]
Cli,
#[serde(rename = "api")]
Api,
#[serde(rename = "worker")]
Worker,
}
impl Default for Source {
fn default() -> Source {
Self::Ui
}
}