mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-07-08 05:14:37 -05:00
Add highest numbered chapter function in MangaType (#1397)
* Add highest numbered chapter function in MangaType * Fix name
This commit is contained in:
@@ -256,3 +256,27 @@ class FirstUnreadChapterForMangaDataLoader : KotlinDataLoader<Int, ChapterType?>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class HighestNumberedChapterForMangaDataLoader : KotlinDataLoader<Int, ChapterType?> {
|
||||||
|
override val dataLoaderName = "HighestNumberedChapterForMangaDataLoader"
|
||||||
|
|
||||||
|
override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader<Int, ChapterType?> =
|
||||||
|
DataLoaderFactory.newDataLoader<Int, ChapterType?> { ids ->
|
||||||
|
future {
|
||||||
|
transaction {
|
||||||
|
addLogger(Slf4jSqlDebugLogger)
|
||||||
|
val highestNumberedChaptersByMangaId =
|
||||||
|
ChapterTable
|
||||||
|
.selectAll()
|
||||||
|
.where { (ChapterTable.manga inList ids) and (ChapterTable.chapter_number greater 0f) }
|
||||||
|
.orderBy(ChapterTable.chapter_number to SortOrder.DESC_NULLS_LAST)
|
||||||
|
.groupBy { it[ChapterTable.manga].value }
|
||||||
|
ids.map { id ->
|
||||||
|
highestNumberedChaptersByMangaId[id]
|
||||||
|
?.firstOrNull()
|
||||||
|
?.let { chapter -> ChapterType(chapter) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ 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.HasDuplicateChaptersForMangaDataLoader
|
||||||
|
import suwayomi.tachidesk.graphql.dataLoaders.HighestNumberedChapterForMangaDataLoader
|
||||||
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
|
||||||
@@ -60,6 +61,7 @@ class TachideskDataLoaderRegistryFactory {
|
|||||||
LatestFetchedChapterForMangaDataLoader(),
|
LatestFetchedChapterForMangaDataLoader(),
|
||||||
LatestUploadedChapterForMangaDataLoader(),
|
LatestUploadedChapterForMangaDataLoader(),
|
||||||
FirstUnreadChapterForMangaDataLoader(),
|
FirstUnreadChapterForMangaDataLoader(),
|
||||||
|
HighestNumberedChapterForMangaDataLoader(),
|
||||||
GlobalMetaDataLoader(),
|
GlobalMetaDataLoader(),
|
||||||
ChapterMetaDataLoader(),
|
ChapterMetaDataLoader(),
|
||||||
MangaMetaDataLoader(),
|
MangaMetaDataLoader(),
|
||||||
|
|||||||
@@ -154,6 +154,9 @@ class MangaType(
|
|||||||
fun firstUnreadChapter(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture<ChapterType?> =
|
fun firstUnreadChapter(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture<ChapterType?> =
|
||||||
dataFetchingEnvironment.getValueFromDataLoader("FirstUnreadChapterForMangaDataLoader", id)
|
dataFetchingEnvironment.getValueFromDataLoader("FirstUnreadChapterForMangaDataLoader", id)
|
||||||
|
|
||||||
|
fun highestNumberedChapter(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture<ChapterType?> =
|
||||||
|
dataFetchingEnvironment.getValueFromDataLoader("HighestNumberedChapterForMangaDataLoader", id)
|
||||||
|
|
||||||
fun chapters(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture<ChapterNodeList> =
|
fun chapters(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture<ChapterNodeList> =
|
||||||
dataFetchingEnvironment.getValueFromDataLoader<Int, ChapterNodeList>("ChaptersForMangaDataLoader", id)
|
dataFetchingEnvironment.getValueFromDataLoader<Int, ChapterNodeList>("ChaptersForMangaDataLoader", id)
|
||||||
|
|
||||||
|
|||||||
@@ -559,7 +559,7 @@ object Chapter {
|
|||||||
.where { ChapterMetaTable.ref inList chapterIds }
|
.where { ChapterMetaTable.ref inList chapterIds }
|
||||||
.groupBy { it[ChapterMetaTable.ref] }
|
.groupBy { it[ChapterMetaTable.ref] }
|
||||||
.mapValues { it.value.associate { it[ChapterMetaTable.key] to it[ChapterMetaTable.value] } }
|
.mapValues { it.value.associate { it[ChapterMetaTable.key] to it[ChapterMetaTable.value] } }
|
||||||
.withDefault { emptyMap<String, String>() }
|
.withDefault { emptyMap() }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getChapterMetaMap(chapter: EntityID<Int>): Map<String, String> =
|
fun getChapterMetaMap(chapter: EntityID<Int>): Map<String, String> =
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ fun updateMangaDownloadDir(
|
|||||||
val mangaEntry = getMangaEntry(mangaId)
|
val mangaEntry = getMangaEntry(mangaId)
|
||||||
val source = GetCatalogueSource.getCatalogueSourceOrStub(mangaEntry[MangaTable.sourceReference])
|
val source = GetCatalogueSource.getCatalogueSourceOrStub(mangaEntry[MangaTable.sourceReference])
|
||||||
|
|
||||||
val sourceDir = source.toString()
|
val sourceDir = SafePath.buildValidFilename(source.toString())
|
||||||
val mangaDir = SafePath.buildValidFilename(mangaEntry[MangaTable.title])
|
val mangaDir = SafePath.buildValidFilename(mangaEntry[MangaTable.title])
|
||||||
|
|
||||||
val newMangaDir = SafePath.buildValidFilename(newTitle)
|
val newMangaDir = SafePath.buildValidFilename(newTitle)
|
||||||
|
|||||||
Reference in New Issue
Block a user