use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(test, derive(Default))]
pub struct Notification {
#[serde(rename = "$id")]
pub id: String,
#[serde(rename = "$createdAt")]
pub created_at: String,
#[serde(rename = "$updatedAt")]
pub updated_at: String,
#[serde(rename = "messageId")]
#[serde(skip_serializing_if = "Option::is_none")]
pub message_id: Option<String>,
#[serde(rename = "type")]
pub r#type: String,
#[serde(rename = "channel")]
pub channel: String,
#[serde(rename = "resourceType")]
pub resource_type: String,
#[serde(rename = "resourceId")]
pub resource_id: String,
#[serde(rename = "parentResourceType")]
pub parent_resource_type: String,
#[serde(rename = "parentResourceId")]
pub parent_resource_id: String,
#[serde(rename = "projectId")]
#[serde(skip_serializing_if = "Option::is_none")]
pub project_id: Option<String>,
#[serde(rename = "title")]
pub title: String,
#[serde(rename = "body")]
pub body: String,
#[serde(rename = "read")]
#[serde(skip_serializing_if = "Option::is_none")]
pub read: Option<bool>,
#[serde(rename = "firstSeen")]
#[serde(skip_serializing_if = "Option::is_none")]
pub first_seen: Option<String>,
#[serde(rename = "lastSeen")]
#[serde(skip_serializing_if = "Option::is_none")]
pub last_seen: Option<String>,
}
impl Notification {
pub fn id(&self) -> &String {
&self.id
}
pub fn created_at(&self) -> &String {
&self.created_at
}
pub fn updated_at(&self) -> &String {
&self.updated_at
}
pub fn set_message_id(mut self, message_id: String) -> Self {
self.message_id = Some(message_id);
self
}
pub fn message_id(&self) -> Option<&String> {
self.message_id.as_ref()
}
pub fn r#type(&self) -> &String {
&self.r#type
}
pub fn channel(&self) -> &String {
&self.channel
}
pub fn resource_type(&self) -> &String {
&self.resource_type
}
pub fn resource_id(&self) -> &String {
&self.resource_id
}
pub fn parent_resource_type(&self) -> &String {
&self.parent_resource_type
}
pub fn parent_resource_id(&self) -> &String {
&self.parent_resource_id
}
pub fn set_project_id(mut self, project_id: String) -> Self {
self.project_id = Some(project_id);
self
}
pub fn project_id(&self) -> Option<&String> {
self.project_id.as_ref()
}
pub fn title(&self) -> &String {
&self.title
}
pub fn body(&self) -> &String {
&self.body
}
pub fn set_read(mut self, read: bool) -> Self {
self.read = Some(read);
self
}
pub fn read(&self) -> Option<&bool> {
self.read.as_ref()
}
pub fn set_first_seen(mut self, first_seen: String) -> Self {
self.first_seen = Some(first_seen);
self
}
pub fn first_seen(&self) -> Option<&String> {
self.first_seen.as_ref()
}
pub fn set_last_seen(mut self, last_seen: String) -> Self {
self.last_seen = Some(last_seen);
self
}
pub fn last_seen(&self) -> Option<&String> {
self.last_seen.as_ref()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_notification_creation() {
let _model = <Notification as Default>::default();
let _ = _model.id();
let _ = _model.created_at();
let _ = _model.updated_at();
let _ = _model.r#type();
let _ = _model.channel();
let _ = _model.resource_type();
let _ = _model.resource_id();
let _ = _model.parent_resource_type();
let _ = _model.parent_resource_id();
let _ = _model.title();
let _ = _model.body();
}
#[test]
fn test_notification_serialization() {
let model = <Notification as Default>::default();
let json = serde_json::to_string(&model);
assert!(json.is_ok());
let deserialized: Result<Notification, _> = serde_json::from_str(&json.unwrap());
assert!(deserialized.is_ok());
}
}