use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Notification {
#[serde(rename = "pk")]
pub pk: uuid::Uuid,
#[serde(rename = "severity")]
pub severity: models::SeverityEnum,
#[serde(rename = "body")]
pub body: String,
#[serde(
rename = "hyperlink",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub hyperlink: Option<Option<String>>,
#[serde(
rename = "hyperlink_label",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub hyperlink_label: Option<Option<String>>,
#[serde(rename = "created")]
pub created: chrono::DateTime<chrono::FixedOffset>,
#[serde(rename = "event", skip_serializing_if = "Option::is_none")]
pub event: Option<models::Event>,
#[serde(rename = "seen", skip_serializing_if = "Option::is_none")]
pub seen: Option<bool>,
}
impl Notification {
pub fn new(
pk: uuid::Uuid,
severity: models::SeverityEnum,
body: String,
created: chrono::DateTime<chrono::FixedOffset>,
) -> Notification {
Notification {
pk,
severity,
body,
hyperlink: None,
hyperlink_label: None,
created,
event: None,
seen: None,
}
}
}