From 6e084b5b4f03c45ee50427fcfedee6d7469603c5 Mon Sep 17 00:00:00 2001
From: Christian Raphael Heryanto <christian.raphael@ui.ac.id>
Date: Fri, 28 Mar 2025 14:50:37 +0800
Subject: [PATCH] Create Notification model struct.

---
 src/model/mod.rs          |  1 +
 src/model/notification.rs | 40 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 41 insertions(+)
 create mode 100644 src/model/notification.rs

diff --git a/src/model/mod.rs b/src/model/mod.rs
index f25842f..a3e7f89 100644
--- a/src/model/mod.rs
+++ b/src/model/mod.rs
@@ -1 +1,2 @@
+pub mod notification;
 pub mod subscriber;
diff --git a/src/model/notification.rs b/src/model/notification.rs
new file mode 100644
index 0000000..23697e9
--- /dev/null
+++ b/src/model/notification.rs
@@ -0,0 +1,40 @@
+use std::fmt::{Display, Formatter, Result};
+
+use rocket::serde::{Deserialize, Serialize};
+
+#[derive(Debug, Clone, Deserialize, Serialize)]
+#[serde(crate = "rocket::serde")]
+pub struct Notification {
+    pub product_title: String,
+    pub product_url: String,
+    pub product_type: String,
+    pub subscriber_name: String,
+    pub status: String,
+}
+
+impl Display for Notification {
+    fn fmt(&self, f: &mut Formatter<'_>) -> Result {
+        if self.status.to_uppercase().eq("CREATED") {
+            return write!(
+                f,
+                "Hello {}, let's try our new {} product: {}, only in BambangShop! Check it out: {}",
+                self.subscriber_name,
+                self.product_type.to_lowercase(),
+                self.product_title,
+                self.product_url
+            );
+        } else if self.status.to_uppercase().eq("DELETED") {
+            return write!(
+                f,
+                "Hello {}, we informed that our {} product called {} already sold out...",
+                self.subscriber_name,
+                self.product_type.to_lowercase(),
+                self.product_title
+            );
+        } else {
+            return write!(f,
+                "Hello {}, let's try our {} product: {}, grab it out before the stock ran out! Check it out: {}",
+                self.subscriber_name, self.product_type.to_lowercase(), self.product_title, self.product_url);
+        }
+    }
+}
-- 
GitLab