From af320ae0c6d15cc12874a6ba9a5915f872ae83b2 Mon Sep 17 00:00:00 2001
From: rafliesa <rflisaa@gmail.com>
Date: Fri, 28 Mar 2025 10:29:31 +0700
Subject: [PATCH] Reflection Publisher-2

---
 README.md             | 12 +++++++++++-
 src/controller/mod.rs |  2 +-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index 52100ea..1677c91 100644
--- a/README.md
+++ b/README.md
@@ -7,4 +7,14 @@ Tujuan Subscriber didefinisikan sebagai interface adalah untuk mendukung banyak
 Kita bisa saja menggunakan Vec (list) untuk kasus ini. Namun, drawback terbesarnya ada pada kompleksitas waktunya. Jika kita hanya menggunakan Vect (list), kita tidak bisa secara langsung memverifikasi keunikan id dan url yang sedang diinsert. Sehingga butuh looping untuk mengecek satu persatu elemen yang memakan waktu O(N). Sedangkan dengan DashMap ( What a cute name :> ), kita dapat melakukan hal tersebut dengan kompleksitas rata-rata O(1) karena kita dapat langsung mengetahui apakah index yg digenerate oleh hash sudah ditempati atau belum.
 
 ## 3. When programming using Rust, we are enforced by rigorous compiler constraints to make a thread-safe program. In the case of the List of Subscribers (SUBSCRIBERS) static variable, we used the DashMap external library for thread safe HashMap. Explain based on your understanding of design patterns, do we still need DashMap or we can implement Singleton pattern instead?
-Kita tidak perlu menggunakan Singleton Pattern. Pada kasus ini, yang mana konkurensi diperhatikan, DashMap lebih baik dibanding dengan kita menggunakan Singleton Pattern. Hal ini karena DashMap sudah menyediakan thread safety tanpa memerlukan manual locking sehingga secara mudah memungkinkan thread untuk melakuakn r/w secara paralel dengan kompleksitas O(1). Sedangkan jika kita membuat Singleton dengan Mutex<HashMap>, setiap operasi r/w mengunci HashMap sehingga HashMap tidak dapat diakses thread lain ketika sedang dilakukan operasi.
\ No newline at end of file
+Kita tidak perlu menggunakan Singleton Pattern. Pada kasus ini, yang mana konkurensi diperhatikan, DashMap lebih baik dibanding dengan kita menggunakan Singleton Pattern. Hal ini karena DashMap sudah menyediakan thread safety tanpa memerlukan manual locking sehingga secara mudah memungkinkan thread untuk melakuakn r/w secara paralel dengan kompleksitas O(1). Sedangkan jika kita membuat Singleton dengan Mutex<HashMap>, setiap operasi r/w mengunci HashMap sehingga HashMap tidak dapat diakses thread lain ketika sedang dilakukan operasi.
+
+# Reflection Publisher-2
+## 1. In the Model-View Controller (MVC) compound pattern, there is no “Service” and “Repository”. Model in MVC covers both data storage and business logic. Explain based on your understanding of design principles, why we need to separate “Service” and “Repository” from a Model?
+Dengan membebankan tugas repository dan service hanya pda Model, projek menjadi lebih sulit dimaintain. Dengan adanya pemisahan tugas ini, repository berperan menghandle storage dan service menghandle logika bisnis, kedua beban tersebut menjadi independen sehingga ketika kita ingin memperluas salah satunya, kita tidak perlu menghiraukan yang lain.
+
+## 2. What happens if we only use the Model? Explain your imagination on how the interactions between each model (Program, Subscriber, Notification) affect the code complexity for each model?
+Model menjadi sangat bloated. Selain itu, skalabilitas menjadi sangat buruk, misal kita ingin mengubah cara notifikasi dikirim, kita perlu merubah model dibandingkan dengan mengubah hanya `NotificationService`.
+
+## 3. Have you explored more about Postman? Tell us how this tool helps you to test your current work. You might want to also list which features in Postman you are interested in or feel like it is helpful to help your Group Project or any of your future software engineering projects.
+Postman membantu kita untuk mengetest endpoint yang telah kita buat. Alih-alih memerlukan browser client seperti metode konvensional. Kita dapat menembak langsung ke endpoint dengan berbagai request method tanpa perlu berinteraksi melalui client. Hal ini sangat membantu kita dalam mengembangkan sisi backend dari sebuah aplikasi.
diff --git a/src/controller/mod.rs b/src/controller/mod.rs
index 346ff5d..fe4a544 100644
--- a/src/controller/mod.rs
+++ b/src/controller/mod.rs
@@ -7,6 +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![notification::subscribe, notification::unsubscribe])
+            .mount("/notification", routes![notification::subscribe, notification::unsubscribe])
     });
 }
-- 
GitLab