From e633da5567e6cc33beff1757d50c55b7e729a644 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Fri, 5 Feb 2021 23:14:58 -0500 Subject: [PATCH] Backup read manga that are not in library --- .../tachiyomi/data/backup/AbstractBackupManager.kt | 3 +++ .../tachiyomi/data/backup/full/FullBackupManager.kt | 2 +- .../tachiyomi/data/database/queries/MangaQueries.kt | 9 +++++++++ .../tachiyomi/data/database/queries/RawQueries.kt | 12 ++++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt index ac932259ec35..e47e002d9a18 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt @@ -68,6 +68,9 @@ abstract class AbstractBackupManager(protected val context: Context) { databaseHelper.getFavoriteMangas().executeAsBlocking() // SY --> + protected fun getReadManga(): List = + databaseHelper.getReadNotInLibraryMangas().executeAsBlocking() + /** * Returns list containing merged manga that are possibly not in the library * diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt index 924c1cd48242..63e5da4f39cf 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt @@ -67,7 +67,7 @@ class FullBackupManager(context: Context) : AbstractBackupManager(context) { var backup: Backup? = null databaseHelper.inTransaction { - val databaseManga = getFavoriteManga() /* SY --> */ + getMergedManga().filterNot { it.source == MERGED_SOURCE_ID } /* SY <-- */ + val databaseManga = getFavoriteManga() /* SY --> */ + getReadManga() + getMergedManga().filterNot { it.source == MERGED_SOURCE_ID } /* SY <-- */ backup = Backup( backupManga(databaseManga, flags), diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt index 45d8b660f9a5..d63826d18243 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt @@ -79,6 +79,15 @@ interface MangaQueries : DbProvider { .prepare() // SY --> + fun getReadNotInLibraryMangas() = db.get() + .listOfObjects(Manga::class.java) + .withQuery( + RawQuery.builder() + .query(getReadMangaNotInLibraryQuery()) + .build() + ) + .prepare() + fun updateMangaInfo(manga: Manga) = db.put() .`object`(manga) .withPutResolver(MangaInfoPutResolver()) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt index f0f344972e84..4f90f1495863 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt @@ -61,6 +61,18 @@ fun getMergedChaptersQuery() = ON ${Chapter.TABLE}.${Chapter.COL_MANGA_ID} = M.${Merged.COL_MANGA_ID} """ +/** + * Query to get manga that are not in library, but have read chapters + */ +fun getReadMangaNotInLibraryQuery() = + """ + SELECT ${Manga.TABLE}.* + FROM ${Manga.TABLE} + WHERE ${Manga.COL_FAVORITE} = 0 AND ${Manga.COL_ID} IN( + SELECT ${Chapter.TABLE}.${Chapter.COL_MANGA_ID} FROM ${Chapter.TABLE} WHERE ${Chapter.COL_READ} = 1 + ) +""" + /** * Query to get the manga from the library, with their categories and unread count. */