Эх сурвалжийг харах

Use transaction on restore to go brr. (#10375)

refactor: use transaction to go brr.

This improve the restore speed on fresh db and non fresh db.

Signed-off-by: KaiserBh <[email protected]>
KaiserBh 1 жил өмнө
parent
commit
b1067b942e

+ 17 - 15
app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaRestorer.kt

@@ -57,22 +57,24 @@ class MangaRestorer(
         backupManga: BackupManga,
         backupCategories: List<BackupCategory>,
     ) {
-        val dbManga = findExistingManga(backupManga)
-        val manga = backupManga.getMangaImpl()
-        val restoredManga = if (dbManga == null) {
-            restoreNewManga(manga)
-        } else {
-            restoreExistingManga(manga, dbManga)
-        }
+        handler.await(inTransaction = true) {
+            val dbManga = findExistingManga(backupManga)
+            val manga = backupManga.getMangaImpl()
+            val restoredManga = if (dbManga == null) {
+                restoreNewManga(manga)
+            } else {
+                restoreExistingManga(manga, dbManga)
+            }
 
-        restoreMangaDetails(
-            manga = restoredManga,
-            chapters = backupManga.chapters,
-            categories = backupManga.categories,
-            backupCategories = backupCategories,
-            history = backupManga.history + backupManga.brokenHistory.map { it.toBackupHistory() },
-            tracks = backupManga.tracking,
-        )
+            restoreMangaDetails(
+                manga = restoredManga,
+                chapters = backupManga.chapters,
+                categories = backupManga.categories,
+                backupCategories = backupCategories,
+                history = backupManga.history + backupManga.brokenHistory.map { it.toBackupHistory() },
+                tracks = backupManga.tracking,
+            )
+        }
     }
 
     private suspend fun findExistingManga(backupManga: BackupManga): Manga? {