Show merged manga chapters in updates tab
This commit is contained in:
parent
166b525454
commit
856e18d7a2
@ -8,6 +8,7 @@ import com.squareup.sqldelight.runtime.coroutines.mapToList
|
|||||||
import com.squareup.sqldelight.runtime.coroutines.mapToOne
|
import com.squareup.sqldelight.runtime.coroutines.mapToOne
|
||||||
import com.squareup.sqldelight.runtime.coroutines.mapToOneOrNull
|
import com.squareup.sqldelight.runtime.coroutines.mapToOneOrNull
|
||||||
import eu.kanade.data.manga.LibraryQuery
|
import eu.kanade.data.manga.LibraryQuery
|
||||||
|
import eu.kanade.data.updates.UpdatesQuery
|
||||||
import eu.kanade.tachiyomi.Database
|
import eu.kanade.tachiyomi.Database
|
||||||
import kotlinx.coroutines.CoroutineDispatcher
|
import kotlinx.coroutines.CoroutineDispatcher
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
@ -91,5 +92,7 @@ class AndroidDatabaseHandler(
|
|||||||
|
|
||||||
// SY -->
|
// SY -->
|
||||||
fun getLibraryQuery() = LibraryQuery(driver)
|
fun getLibraryQuery() = LibraryQuery(driver)
|
||||||
|
|
||||||
|
fun getUpdatesQuery(after: Long) = UpdatesQuery(driver, after)
|
||||||
// SY <--
|
// SY <--
|
||||||
}
|
}
|
||||||
|
89
app/src/main/java/eu/kanade/data/updates/UpdatesQuery.kt
Normal file
89
app/src/main/java/eu/kanade/data/updates/UpdatesQuery.kt
Normal file
@ -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<UpdatesWithRelations>(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"
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
package eu.kanade.data.updates
|
package eu.kanade.data.updates
|
||||||
|
|
||||||
|
import eu.kanade.data.AndroidDatabaseHandler
|
||||||
import eu.kanade.data.DatabaseHandler
|
import eu.kanade.data.DatabaseHandler
|
||||||
import eu.kanade.domain.updates.model.UpdatesWithRelations
|
import eu.kanade.domain.updates.model.UpdatesWithRelations
|
||||||
import eu.kanade.domain.updates.repository.UpdatesRepository
|
import eu.kanade.domain.updates.repository.UpdatesRepository
|
||||||
@ -11,7 +12,8 @@ class UpdatesRepositoryImpl(
|
|||||||
|
|
||||||
override fun subscribeAll(after: Long): Flow<List<UpdatesWithRelations>> {
|
override fun subscribeAll(after: Long): Flow<List<UpdatesWithRelations>> {
|
||||||
return databaseHandler.subscribeToList {
|
return databaseHandler.subscribeToList {
|
||||||
updatesViewQueries.updates(after, updateWithRelationMapper)
|
// updatesViewQueries.updates(after, updateWithRelationMapper)
|
||||||
|
(databaseHandler as AndroidDatabaseHandler).getUpdatesQuery(after)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user