diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Chapter.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Chapter.kt index a14b937d..b9976cc7 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Chapter.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/Chapter.kt @@ -132,6 +132,9 @@ object Chapter { .associateBy({ it[ChapterTable.url] }, { it }) } + val chapterIds = chapterList.map { dbChapterMap.getValue(it.url)[ChapterTable.id] } + val chapterMetas = getChaptersMetaMaps(chapterIds) + return chapterList.mapIndexed { index, it -> val dbChapter = dbChapterMap.getValue(it.url) @@ -156,7 +159,7 @@ object Chapter { dbChapter[ChapterTable.pageCount], chapterList.size, - meta = getChapterMetaMap(dbChapter[ChapterTable.id]) + meta = chapterMetas.getValue(dbChapter[ChapterTable.id]) ) } } @@ -193,6 +196,15 @@ object Chapter { } } + fun getChaptersMetaMaps(chapterIds: List>): Map, Map> { + return transaction { + ChapterMetaTable.select { ChapterMetaTable.ref inList chapterIds } + .groupBy { it[ChapterMetaTable.ref] } + .mapValues { it.value.associate { it[ChapterMetaTable.key] to it[ChapterMetaTable.value] } } + .withDefault { emptyMap() } + } + } + fun getChapterMetaMap(chapter: EntityID): Map { return transaction { ChapterMetaTable.select { ChapterMetaTable.ref eq chapter }