From af11854c563fbcfd9c603f5cc81c76e0318d882b Mon Sep 17 00:00:00 2001
From: asShidqi <fayyed76@gmail.com>
Date: Fri, 28 Mar 2025 20:11:44 +0700
Subject: [PATCH] Implement subscribe function in Notification service.

---
 src/controller/mod.rs          |  2 ++
 src/controller/notification.rs | 14 ++++++++++++++
 src/service/mod.rs             |  1 +
 src/service/notification.rs    | 12 ++++++++++++
 4 files changed, 29 insertions(+)
 create mode 100644 src/controller/notification.rs
 create mode 100644 src/service/notification.rs

diff --git a/src/controller/mod.rs b/src/controller/mod.rs
index 861f657..87c8041 100644
--- a/src/controller/mod.rs
+++ b/src/controller/mod.rs
@@ -1,4 +1,5 @@
 pub mod product;
+pub mod notification;
 
 use rocket::fairing::AdHoc;
 
@@ -6,5 +7,6 @@ pub fn route_stage() -> AdHoc {
     return AdHoc::on_ignite("Initializing controller routes...", |rocket| async {
         rocket
             .mount("/product", routes![product::create, product::list, product::read, product::delete])
+            .mount("notification", routes![])
     });
 }
diff --git a/src/controller/notification.rs b/src/controller/notification.rs
new file mode 100644
index 0000000..c5433f1
--- /dev/null
+++ b/src/controller/notification.rs
@@ -0,0 +1,14 @@
+use rocket::response::status::Created;
+use rocket::serde::json::Json;
+use bambangshop::Result;
+use crate::model::subscriber::Subscriber;
+use crate::service::notification::NotificationService;
+
+use super::product;
+
+pub fn subscribe(product_type: &str, subscriber: Subscriber) -> Result<Subscriber> {
+    let product_type_str: String = product_type.to_uppercase();
+    let product_type_str: &str = product_type_str.as_str();
+    let subscriber_result: Subscriber = SubscriberRepository::add(product_type_str, subscriber);
+    return Ok(subscriber_result);
+}
\ No newline at end of file
diff --git a/src/service/mod.rs b/src/service/mod.rs
index 68024e1..0d6deb1 100644
--- a/src/service/mod.rs
+++ b/src/service/mod.rs
@@ -1 +1,2 @@
 pub mod product;
+pub mod notification;
diff --git a/src/service/notification.rs b/src/service/notification.rs
new file mode 100644
index 0000000..8493783
--- /dev/null
+++ b/src/service/notification.rs
@@ -0,0 +1,12 @@
+use std::thread;
+use bambangshop::{Result, compose_error_response};
+use rocket::http::Status;
+use crate::model::notification::Notification;
+use crate::model::product::Product;
+use crate::model::subscriber::Subscriber;
+use crate::repository::subscriber::SubscriberRepository;
+
+pub struct NotificationService;
+
+impl NotificationService {
+}
\ No newline at end of file
-- 
GitLab