diff --git a/src/repository/mod.rs b/src/repository/mod.rs
index 9df928f76648ea9951ed8a1d00b96acb69f1634d..e4371e0316d93924c7f25de9c036dd5a89759f2a 100644
--- a/src/repository/mod.rs
+++ b/src/repository/mod.rs
@@ -1,2 +1,2 @@
 pub mod product;
-pub mod subscribers;
\ No newline at end of file
+pub mod subscriber;
\ No newline at end of file
diff --git a/src/repository/subscribers.rs b/src/repository/subscriber.rs
similarity index 100%
rename from src/repository/subscribers.rs
rename to src/repository/subscriber.rs
diff --git a/src/service/notification.rs b/src/service/notification.rs
index 53fa0575e482508b657b3bc4772a7f673a4eac0e..5af4f3fb3f180d934c82e271792c880df20fdd6e 100644
--- a/src/service/notification.rs
+++ b/src/service/notification.rs
@@ -3,3 +3,17 @@ 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::{self, Subscriber};
+use crate::repository::subscriber::SubscriberRepository;
+
+pub struct NotificationService;
+
+impl NotificationService {
+    pub fn subscribe(product_type: &str, subscriber: Subscriber) -> Result<Subscriber> {
+        let product_type_upper: String = product_type.to_uppercase();
+        let product_type_str: &str = product_type_upper.as_str();
+        let subscriber_result: Subscriber = SubscriberRepository::add(product_type_str, subscriber);
+        return Ok(subscriber_result) 
+    }
+}