From af22d462b6fe04746d06dbac337e39ed3ea5ee4b Mon Sep 17 00:00:00 2001
From: j1nxie <rylieeeeexd@gmail.com>
Date: Fri, 22 Nov 2024 09:24:42 +0700
Subject: [PATCH] fix(chapter_tracker): don't exit the entire loop on error

---
 src/chapter_tracker.rs | 33 +++++++++++++++++++++++----------
 1 file changed, 23 insertions(+), 10 deletions(-)

diff --git a/src/chapter_tracker.rs b/src/chapter_tracker.rs
index 72a2d44..534c178 100644
--- a/src/chapter_tracker.rs
+++ b/src/chapter_tracker.rs
@@ -11,18 +11,24 @@ pub async fn chapter_tracker(http: &Http, webhook: &Webhook, data: &Data) -> Res
     let mut chapter_list: Vec<CreateEmbed> = vec![];
 
     for db_manga in manga_list {
-        let manga = data
+        let uuid = db_manga.manga_dex_id;
+
+        let manga = match data
             .md
             .as_ref()
             .unwrap()
             .manga()
-            .id(db_manga.manga_dex_id)
+            .id(uuid)
             .get()
             .send()
             .await
-            .inspect_err(|e|
-                tracing::error!(err = ?e, uuid = %db_manga.manga_dex_id, "an error occurred when fetching manga"),
-            )?;
+        {
+            Ok(manga) => manga,
+            Err(e) => {
+                tracing::error!(err = ?e, uuid = %uuid, "an error occurred when fetching manga");
+                continue;
+            }
+        };
 
         let manga_id = manga.data.id;
         let manga = manga.data.attributes;
@@ -43,7 +49,7 @@ pub async fn chapter_tracker(http: &Http, webhook: &Webhook, data: &Data) -> Res
             }
         };
 
-        let chapter_feed = data
+        let chapter_feed = match data
             .md
             .as_ref()
             .unwrap()
@@ -62,9 +68,13 @@ pub async fn chapter_tracker(http: &Http, webhook: &Webhook, data: &Data) -> Res
             .limit(1u32)
             .send()
             .await
-            .inspect_err(|e|
-                tracing::error!(err = ?e, uuid = %db_manga.manga_dex_id, "an error occurred when fetching chapter feed"),
-            )?;
+        {
+            Ok(feed) => feed,
+            Err(e) => {
+                tracing::error!(err = ?e, uuid = %uuid, "an error occurred when fetching chapter feed");
+                continue;
+            }
+        };
 
         let mut db_manga_insert = db_manga.into_active_model();
         let now = time::OffsetDateTime::now_utc();
@@ -115,7 +125,10 @@ pub async fn chapter_tracker(http: &Http, webhook: &Webhook, data: &Data) -> Res
 
         db_manga_insert.last_updated = Set(time::PrimitiveDateTime::new(now.date(), now.time()));
 
-        db_manga_insert.update(&data.db).await?;
+        if let Err(e) = db_manga_insert.update(&data.db).await {
+            tracing::error!(err = ?e, uuid = %uuid, "an error occurred when updating manga in database");
+            continue;
+        };
     }
 
     if chapter_list.is_empty() {