From 856e18d7a22c1ac78934915c06800ab82f88b31f Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Mon, 17 Oct 2022 12:54:39 -0400 Subject: [PATCH] Show merged manga chapters in updates tab --- .../eu/kanade/data/AndroidDatabaseHandler.kt | 3 + .../eu/kanade/data/updates/UpdatesQuery.kt | 89 +++++++++++++++++++ .../data/updates/UpdatesRepositoryImpl.kt | 4 +- 3 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/eu/kanade/data/updates/UpdatesQuery.kt diff --git a/app/src/main/java/eu/kanade/data/AndroidDatabaseHandler.kt b/app/src/main/java/eu/kanade/data/AndroidDatabaseHandler.kt index 468f8713e..a6dfdb339 100644 --- a/app/src/main/java/eu/kanade/data/AndroidDatabaseHandler.kt +++ b/app/src/main/java/eu/kanade/data/AndroidDatabaseHandler.kt @@ -8,6 +8,7 @@ import com.squareup.sqldelight.runtime.coroutines.mapToList import com.squareup.sqldelight.runtime.coroutines.mapToOne import com.squareup.sqldelight.runtime.coroutines.mapToOneOrNull import eu.kanade.data.manga.LibraryQuery +import eu.kanade.data.updates.UpdatesQuery import eu.kanade.tachiyomi.Database import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers @@ -91,5 +92,7 @@ class AndroidDatabaseHandler( // SY --> fun getLibraryQuery() = LibraryQuery(driver) + + fun getUpdatesQuery(after: Long) = UpdatesQuery(driver, after) // SY <-- } diff --git a/app/src/main/java/eu/kanade/data/updates/UpdatesQuery.kt b/app/src/main/java/eu/kanade/data/updates/UpdatesQuery.kt new file mode 100644 index 000000000..6414e9ce0 --- /dev/null +++ b/app/src/main/java/eu/kanade/data/updates/UpdatesQuery.kt @@ -0,0 +1,89 @@ +package eu.kanade.data.updates + +import com.squareup.sqldelight.Query +import com.squareup.sqldelight.db.SqlCursor +import com.squareup.sqldelight.db.SqlDriver +import com.squareup.sqldelight.internal.copyOnWriteList +import eu.kanade.domain.updates.model.UpdatesWithRelations +import exh.source.MERGED_SOURCE_ID + +private val mapper = { cursor: SqlCursor -> + updateWithRelationMapper( + cursor.getLong(0)!!, + cursor.getString(1)!!, + cursor.getLong(2)!!, + cursor.getString(3)!!, + cursor.getString(4), + cursor.getLong(5)!! == 1L, + cursor.getLong(6)!! == 1L, + cursor.getLong(7)!!, + cursor.getLong(8)!! == 1L, + cursor.getString(9), + cursor.getLong(10)!!, + cursor.getLong(11)!!, + cursor.getLong(12)!!, + ) +} + +class UpdatesQuery(val driver: SqlDriver, val after: Long) : Query(copyOnWriteList(), mapper) { + override fun execute(): SqlCursor { + return driver.executeQuery( + null, + """ + SELECT + mangas._id AS mangaId, + mangas.title AS mangaTitle, + chapters._id AS chapterId, + chapters.name AS chapterName, + chapters.scanlator, + chapters.read, + chapters.bookmark, + mangas.source, + mangas.favorite, + mangas.thumbnail_url AS thumbnailUrl, + mangas.cover_last_modified AS coverLastModified, + chapters.date_upload AS dateUpload, + chapters.date_fetch AS datefetch + FROM mangas JOIN chapters + ON mangas._id = chapters.manga_id + WHERE favorite = 1 AND source <> $MERGED_SOURCE_ID + AND date_fetch > date_added + AND dateUpload > :after + UNION + SELECT + mangas._id AS mangaId, + mangas.title AS mangaTitle, + chapters._id AS chapterId, + chapters.name AS chapterName, + chapters.scanlator, + chapters.read, + chapters.bookmark, + mangas.source, + mangas.favorite, + mangas.thumbnail_url AS thumbnailUrl, + mangas.cover_last_modified AS coverLastModified, + chapters.date_upload AS dateUpload, + chapters.date_fetch AS datefetch + FROM mangas + LEFT JOIN ( + SELECT merged.manga_id,merged.merge_id + FROM merged + GROUP BY merged.merge_id + ) as ME + ON ME.merge_id = mangas._id + JOIN chapters + ON ME.manga_id = chapters.manga_id + WHERE favorite = 1 AND source = $MERGED_SOURCE_ID + AND date_fetch > date_added + AND dateUpload > :after + ORDER BY datefetch DESC; + """.trimIndent(), + 1, + binders = { + bindLong(1, after) + }, + ) + } + + override fun toString(): String = "LibraryQuery.sq:get" +} diff --git a/app/src/main/java/eu/kanade/data/updates/UpdatesRepositoryImpl.kt b/app/src/main/java/eu/kanade/data/updates/UpdatesRepositoryImpl.kt index e9bccf92d..b6f623f4c 100644 --- a/app/src/main/java/eu/kanade/data/updates/UpdatesRepositoryImpl.kt +++ b/app/src/main/java/eu/kanade/data/updates/UpdatesRepositoryImpl.kt @@ -1,5 +1,6 @@ package eu.kanade.data.updates +import eu.kanade.data.AndroidDatabaseHandler import eu.kanade.data.DatabaseHandler import eu.kanade.domain.updates.model.UpdatesWithRelations import eu.kanade.domain.updates.repository.UpdatesRepository @@ -11,7 +12,8 @@ class UpdatesRepositoryImpl( override fun subscribeAll(after: Long): Flow> { return databaseHandler.subscribeToList { - updatesViewQueries.updates(after, updateWithRelationMapper) + // updatesViewQueries.updates(after, updateWithRelationMapper) + (databaseHandler as AndroidDatabaseHandler).getUpdatesQuery(after) } } }