From ac2459c643606d75198c7852fc90581d73aa12ac Mon Sep 17 00:00:00 2001 From: DawnFall19 <ignasius.michael09@gmail.com> Date: Fri, 28 Mar 2025 16:01:08 +0700 Subject: [PATCH] Implement unsubscribe function in Notification service. --- src/service/notification.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/service/notification.rs b/src/service/notification.rs index 71ff1e8..2319c83 100644 --- a/src/service/notification.rs +++ b/src/service/notification.rs @@ -3,7 +3,7 @@ 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::product::{self, Product}; use crate::model::subscriber::Subscriber; use crate::repository::subscriber::SubscriberRepository; @@ -16,4 +16,17 @@ impl NotificationService{ let subscriber_result: Subscriber = SubscriberRepository::add(product_type_str, subscriber); 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(); + let result: Option<Subscriber> = SubscriberRepository::delete(product_type_str, url); + if result.is_none() { + return Err(compose_error_response( + Status::NotFound, + String::from("Subscriber not found.") + )) + } + return Ok(result.unwrap()); + } } \ No newline at end of file -- GitLab