mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-07-03 02:44:34 -05:00
Add "hasDuplicatedChapters" field to gql MangaType (#995)
This commit is contained in:
@@ -119,6 +119,27 @@ class BookmarkedChapterCountForMangaDataLoader : KotlinDataLoader<Int, Int> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class HasDuplicateChaptersForMangaDataLoader : KotlinDataLoader<Int, Boolean> {
|
||||||
|
override val dataLoaderName = "HasDuplicateChaptersForMangaDataLoader"
|
||||||
|
|
||||||
|
override fun getDataLoader(): DataLoader<Int, Boolean> =
|
||||||
|
DataLoaderFactory.newDataLoader { ids ->
|
||||||
|
future {
|
||||||
|
transaction {
|
||||||
|
addLogger(Slf4jSqlDebugLogger)
|
||||||
|
val duplicatedChapterCountByMangaId =
|
||||||
|
ChapterTable.slice(ChapterTable.manga, ChapterTable.chapter_number, ChapterTable.chapter_number.count())
|
||||||
|
.select { (ChapterTable.manga inList ids) and (ChapterTable.chapter_number greaterEq 0f) }
|
||||||
|
.groupBy(ChapterTable.manga, ChapterTable.chapter_number)
|
||||||
|
.having { ChapterTable.chapter_number.count() greater 1 }
|
||||||
|
.associate { it[ChapterTable.manga].value to it[ChapterTable.chapter_number.count()] }
|
||||||
|
|
||||||
|
ids.map { duplicatedChapterCountByMangaId.contains(it) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class LastReadChapterForMangaDataLoader : KotlinDataLoader<Int, ChapterType?> {
|
class LastReadChapterForMangaDataLoader : KotlinDataLoader<Int, ChapterType?> {
|
||||||
override val dataLoaderName = "LastReadChapterForMangaDataLoader"
|
override val dataLoaderName = "LastReadChapterForMangaDataLoader"
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import suwayomi.tachidesk.graphql.dataLoaders.ExtensionDataLoader
|
|||||||
import suwayomi.tachidesk.graphql.dataLoaders.ExtensionForSourceDataLoader
|
import suwayomi.tachidesk.graphql.dataLoaders.ExtensionForSourceDataLoader
|
||||||
import suwayomi.tachidesk.graphql.dataLoaders.FirstUnreadChapterForMangaDataLoader
|
import suwayomi.tachidesk.graphql.dataLoaders.FirstUnreadChapterForMangaDataLoader
|
||||||
import suwayomi.tachidesk.graphql.dataLoaders.GlobalMetaDataLoader
|
import suwayomi.tachidesk.graphql.dataLoaders.GlobalMetaDataLoader
|
||||||
|
import suwayomi.tachidesk.graphql.dataLoaders.HasDuplicateChaptersForMangaDataLoader
|
||||||
import suwayomi.tachidesk.graphql.dataLoaders.LastReadChapterForMangaDataLoader
|
import suwayomi.tachidesk.graphql.dataLoaders.LastReadChapterForMangaDataLoader
|
||||||
import suwayomi.tachidesk.graphql.dataLoaders.LatestFetchedChapterForMangaDataLoader
|
import suwayomi.tachidesk.graphql.dataLoaders.LatestFetchedChapterForMangaDataLoader
|
||||||
import suwayomi.tachidesk.graphql.dataLoaders.LatestReadChapterForMangaDataLoader
|
import suwayomi.tachidesk.graphql.dataLoaders.LatestReadChapterForMangaDataLoader
|
||||||
@@ -53,6 +54,7 @@ class TachideskDataLoaderRegistryFactory {
|
|||||||
DownloadedChapterCountForMangaDataLoader(),
|
DownloadedChapterCountForMangaDataLoader(),
|
||||||
UnreadChapterCountForMangaDataLoader(),
|
UnreadChapterCountForMangaDataLoader(),
|
||||||
BookmarkedChapterCountForMangaDataLoader(),
|
BookmarkedChapterCountForMangaDataLoader(),
|
||||||
|
HasDuplicateChaptersForMangaDataLoader(),
|
||||||
LastReadChapterForMangaDataLoader(),
|
LastReadChapterForMangaDataLoader(),
|
||||||
LatestReadChapterForMangaDataLoader(),
|
LatestReadChapterForMangaDataLoader(),
|
||||||
LatestFetchedChapterForMangaDataLoader(),
|
LatestFetchedChapterForMangaDataLoader(),
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ class MangaType(
|
|||||||
dataFetchingEnvironment.getDataLoader<Int, Int>("DownloadedChapterCountForMangaDataLoader").clear(mangaId)
|
dataFetchingEnvironment.getDataLoader<Int, Int>("DownloadedChapterCountForMangaDataLoader").clear(mangaId)
|
||||||
dataFetchingEnvironment.getDataLoader<Int, Int>("UnreadChapterCountForMangaDataLoader").clear(mangaId)
|
dataFetchingEnvironment.getDataLoader<Int, Int>("UnreadChapterCountForMangaDataLoader").clear(mangaId)
|
||||||
dataFetchingEnvironment.getDataLoader<Int, Int>("BookmarkedChapterCountForMangaDataLoader").clear(mangaId)
|
dataFetchingEnvironment.getDataLoader<Int, Int>("BookmarkedChapterCountForMangaDataLoader").clear(mangaId)
|
||||||
|
dataFetchingEnvironment.getDataLoader<Int, Int>("HasDuplicateChaptersForMangaDataLoader").clear(mangaId)
|
||||||
dataFetchingEnvironment.getDataLoader<Int, ChapterType>("LastReadChapterForMangaDataLoader").clear(mangaId)
|
dataFetchingEnvironment.getDataLoader<Int, ChapterType>("LastReadChapterForMangaDataLoader").clear(mangaId)
|
||||||
dataFetchingEnvironment.getDataLoader<Int, ChapterType>("LatestReadChapterForMangaDataLoader").clear(mangaId)
|
dataFetchingEnvironment.getDataLoader<Int, ChapterType>("LatestReadChapterForMangaDataLoader").clear(mangaId)
|
||||||
dataFetchingEnvironment.getDataLoader<Int, ChapterType>("LatestFetchedChapterForMangaDataLoader").clear(mangaId)
|
dataFetchingEnvironment.getDataLoader<Int, ChapterType>("LatestFetchedChapterForMangaDataLoader").clear(mangaId)
|
||||||
@@ -135,6 +136,10 @@ class MangaType(
|
|||||||
return dataFetchingEnvironment.getValueFromDataLoader("BookmarkedChapterCountForMangaDataLoader", id)
|
return dataFetchingEnvironment.getValueFromDataLoader("BookmarkedChapterCountForMangaDataLoader", id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun hasDuplicateChapters(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture<Boolean> {
|
||||||
|
return dataFetchingEnvironment.getValueFromDataLoader("HasDuplicateChaptersForMangaDataLoader", id)
|
||||||
|
}
|
||||||
|
|
||||||
fun lastReadChapter(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture<ChapterType?> {
|
fun lastReadChapter(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture<ChapterType?> {
|
||||||
return dataFetchingEnvironment.getValueFromDataLoader("LastReadChapterForMangaDataLoader", id)
|
return dataFetchingEnvironment.getValueFromDataLoader("LastReadChapterForMangaDataLoader", id)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user