From 477aeb0a2dce189a742e90ea0a36914f72721b0e Mon Sep 17 00:00:00 2001 From: lantry-glitch <allan.kwek.18@gmail.com> Date: Fri, 28 Mar 2025 14:44:26 +0700 Subject: [PATCH] Implement notify function in Notification service to notify each Subscriber. --- src/service/notification.rs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/service/notification.rs b/src/service/notification.rs index 0e747e3..3d54d33 100644 --- a/src/service/notification.rs +++ b/src/service/notification.rs @@ -16,7 +16,7 @@ impl NotificationService { return Ok(subscriber_result); } - + pub fn unsubscribe(product_type: &str, url: &str) -> Result<Subscriber> { let product_type_upper: String = product_type.to_uppercase(); let product_type_str: &str = product_type_upper.as_str(); @@ -29,5 +29,24 @@ impl NotificationService { } return Ok(result.unwrap()); } + + pub fn notify(&self, product_type: &str, status: &str, product: Product) { + let mut payload: Notification = Notification { + product_title: product.clone().title, + product_type: String::from(product_type), + product_url: product.clone().get_url(), + subscriber_name: String::from(""), + status: String::from(status) + }; + + let subscribers: Vec<Subscriber> = SubscriberRepository::list_all(product_type); + for subscriber in subscribers { + payload.subscriber_name = subscriber.clone().name; + let subscriber_clone = subscriber.clone(); + let payload_clone = payload.clone(); + thread::spawn(move || subscriber_clone.update(payload_clone)); + } + } + } -- GitLab