Allow user to read all read manga stats

This commit is contained in:
Jobobby04
2023-05-10 17:30:52 -04:00
parent 197f729023
commit e9a3463455
9 changed files with 82 additions and 9 deletions
@@ -88,7 +88,7 @@ class AndroidDatabaseHandler(
}
// SY -->
fun getLibraryQuery() = LibraryQuery(driver)
fun getLibraryQuery(condition: String = "M.favorite = 1") = LibraryQuery(driver, condition)
fun getUpdatesQuery(after: Long) = UpdatesQuery(driver, after)
// SY <--
@@ -40,7 +40,10 @@ private val mapper = { cursor: SqlCursor ->
)
}
class LibraryQuery(val driver: SqlDriver) : Query<LibraryView>(copyOnWriteList(), mapper) {
class LibraryQuery(
val driver: SqlDriver,
val condition: String = "M.favorite = 1",
) : Query<LibraryView>(copyOnWriteList(), mapper) {
override fun execute(): SqlCursor {
return driver.executeQuery(
null,
@@ -72,7 +75,7 @@ class LibraryQuery(val driver: SqlDriver) : Query<LibraryView>(copyOnWriteList()
ON M._id = C.manga_id
LEFT JOIN mangas_categories AS MC
ON MC.manga_id = M._id
WHERE M.favorite = 1 AND M.source <> $MERGED_SOURCE_ID
WHERE $condition AND M.source <> $MERGED_SOURCE_ID
UNION
SELECT
M.*,
@@ -109,7 +112,7 @@ class LibraryQuery(val driver: SqlDriver) : Query<LibraryView>(copyOnWriteList()
ON ME.merge_id = C.merge_id
LEFT JOIN mangas_categories AS MC
ON MC.manga_id = M._id
WHERE M.favorite = 1 AND M.source = $MERGED_SOURCE_ID;
WHERE $condition AND M.source = $MERGED_SOURCE_ID;
""".trimIndent(),
1,
)
@@ -179,5 +179,11 @@ class MangaRepositoryImpl(
override suspend fun deleteManga(mangaId: Long) {
handler.await { mangasQueries.deleteById(mangaId) }
}
override suspend fun getReadMangaNotInLibrary(): List<LibraryManga> {
return handler.awaitList {
(handler as AndroidDatabaseHandler).getLibraryQuery("M.favorite = 0 AND C.readCount != 0")
}.map(libraryViewMapper)
}
// SY <--
}