mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-07-03 02:44:34 -05:00
rename ChapterTable.chapterIndex to ChapterTable.sourceOrder
This commit is contained in:
@@ -40,7 +40,7 @@ object Chapter {
|
|||||||
getSourceChapters(mangaId)
|
getSourceChapters(mangaId)
|
||||||
} else {
|
} else {
|
||||||
transaction {
|
transaction {
|
||||||
ChapterTable.select { ChapterTable.manga eq mangaId }.orderBy(ChapterTable.chapterIndex to DESC)
|
ChapterTable.select { ChapterTable.manga eq mangaId }.orderBy(ChapterTable.sourceOrder to DESC)
|
||||||
.map {
|
.map {
|
||||||
ChapterTable.toDataClass(it)
|
ChapterTable.toDataClass(it)
|
||||||
}
|
}
|
||||||
@@ -80,7 +80,7 @@ object Chapter {
|
|||||||
it[chapter_number] = fetchedChapter.chapter_number
|
it[chapter_number] = fetchedChapter.chapter_number
|
||||||
it[scanlator] = fetchedChapter.scanlator
|
it[scanlator] = fetchedChapter.scanlator
|
||||||
|
|
||||||
it[chapterIndex] = index + 1
|
it[sourceOrder] = index + 1
|
||||||
it[ChapterTable.manga] = mangaId
|
it[ChapterTable.manga] = mangaId
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -90,7 +90,7 @@ object Chapter {
|
|||||||
it[chapter_number] = fetchedChapter.chapter_number
|
it[chapter_number] = fetchedChapter.chapter_number
|
||||||
it[scanlator] = fetchedChapter.scanlator
|
it[scanlator] = fetchedChapter.scanlator
|
||||||
|
|
||||||
it[chapterIndex] = index + 1
|
it[sourceOrder] = index + 1
|
||||||
it[ChapterTable.manga] = mangaId
|
it[ChapterTable.manga] = mangaId
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -103,8 +103,8 @@ object Chapter {
|
|||||||
val dbChapterList = transaction { ChapterTable.select { ChapterTable.manga eq mangaId }.toList() }
|
val dbChapterList = transaction { ChapterTable.select { ChapterTable.manga eq mangaId }.toList() }
|
||||||
|
|
||||||
dbChapterList.forEach {
|
dbChapterList.forEach {
|
||||||
if (it[ChapterTable.chapterIndex] >= chapterList.size ||
|
if (it[ChapterTable.sourceOrder] >= chapterList.size ||
|
||||||
chapterList[it[ChapterTable.chapterIndex] - 1].url != it[ChapterTable.url]
|
chapterList[it[ChapterTable.sourceOrder] - 1].url != it[ChapterTable.url]
|
||||||
) {
|
) {
|
||||||
transaction {
|
transaction {
|
||||||
PageTable.deleteWhere { PageTable.chapter eq it[ChapterTable.id] }
|
PageTable.deleteWhere { PageTable.chapter eq it[ChapterTable.id] }
|
||||||
@@ -151,7 +151,7 @@ object Chapter {
|
|||||||
suspend fun getChapter(chapterIndex: Int, mangaId: Int): ChapterDataClass {
|
suspend fun getChapter(chapterIndex: Int, mangaId: Int): ChapterDataClass {
|
||||||
val chapterEntry = transaction {
|
val chapterEntry = transaction {
|
||||||
ChapterTable.select {
|
ChapterTable.select {
|
||||||
(ChapterTable.chapterIndex eq chapterIndex) and (ChapterTable.manga eq mangaId)
|
(ChapterTable.sourceOrder eq chapterIndex) and (ChapterTable.manga eq mangaId)
|
||||||
}.first()
|
}.first()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,7 +159,7 @@ object Chapter {
|
|||||||
chapterEntry[ChapterTable.isDownloaded] && firstPageExists(mangaId, chapterEntry[ChapterTable.id].value)
|
chapterEntry[ChapterTable.isDownloaded] && firstPageExists(mangaId, chapterEntry[ChapterTable.id].value)
|
||||||
return if (!isReallyDownloaded) {
|
return if (!isReallyDownloaded) {
|
||||||
transaction {
|
transaction {
|
||||||
ChapterTable.update({ (ChapterTable.chapterIndex eq chapterIndex) and (ChapterTable.manga eq mangaId) }) {
|
ChapterTable.update({ (ChapterTable.sourceOrder eq chapterIndex) and (ChapterTable.manga eq mangaId) }) {
|
||||||
it[isDownloaded] = false
|
it[isDownloaded] = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -203,7 +203,7 @@ object Chapter {
|
|||||||
val pageCount = pageList.count()
|
val pageCount = pageList.count()
|
||||||
|
|
||||||
transaction {
|
transaction {
|
||||||
ChapterTable.update({ (ChapterTable.manga eq mangaId) and (ChapterTable.chapterIndex eq chapterIndex) }) {
|
ChapterTable.update({ (ChapterTable.manga eq mangaId) and (ChapterTable.sourceOrder eq chapterIndex) }) {
|
||||||
it[ChapterTable.pageCount] = pageCount
|
it[ChapterTable.pageCount] = pageCount
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -219,7 +219,7 @@ object Chapter {
|
|||||||
chapterEntry[ChapterTable.lastPageRead],
|
chapterEntry[ChapterTable.lastPageRead],
|
||||||
chapterEntry[ChapterTable.lastReadAt],
|
chapterEntry[ChapterTable.lastReadAt],
|
||||||
|
|
||||||
chapterEntry[ChapterTable.chapterIndex],
|
chapterEntry[ChapterTable.sourceOrder],
|
||||||
chapterEntry[ChapterTable.isDownloaded],
|
chapterEntry[ChapterTable.isDownloaded],
|
||||||
pageCount,
|
pageCount,
|
||||||
chapterCount.toInt(),
|
chapterCount.toInt(),
|
||||||
@@ -249,7 +249,7 @@ object Chapter {
|
|||||||
) {
|
) {
|
||||||
transaction {
|
transaction {
|
||||||
if (listOf(isRead, isBookmarked, lastPageRead).any { it != null }) {
|
if (listOf(isRead, isBookmarked, lastPageRead).any { it != null }) {
|
||||||
ChapterTable.update({ (ChapterTable.manga eq mangaId) and (ChapterTable.chapterIndex eq chapterIndex) }) { update ->
|
ChapterTable.update({ (ChapterTable.manga eq mangaId) and (ChapterTable.sourceOrder eq chapterIndex) }) { update ->
|
||||||
isRead?.also {
|
isRead?.also {
|
||||||
update[ChapterTable.isRead] = it
|
update[ChapterTable.isRead] = it
|
||||||
}
|
}
|
||||||
@@ -264,7 +264,7 @@ object Chapter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
markPrevRead?.let {
|
markPrevRead?.let {
|
||||||
ChapterTable.update({ (ChapterTable.manga eq mangaId) and (ChapterTable.chapterIndex less chapterIndex) }) {
|
ChapterTable.update({ (ChapterTable.manga eq mangaId) and (ChapterTable.sourceOrder less chapterIndex) }) {
|
||||||
it[ChapterTable.isRead] = markPrevRead
|
it[ChapterTable.isRead] = markPrevRead
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -281,7 +281,7 @@ object Chapter {
|
|||||||
fun modifyChapterMeta(mangaId: Int, chapterIndex: Int, key: String, value: String) {
|
fun modifyChapterMeta(mangaId: Int, chapterIndex: Int, key: String, value: String) {
|
||||||
transaction {
|
transaction {
|
||||||
val chapterId =
|
val chapterId =
|
||||||
ChapterTable.select { (ChapterTable.manga eq mangaId) and (ChapterTable.chapterIndex eq chapterIndex) }
|
ChapterTable.select { (ChapterTable.manga eq mangaId) and (ChapterTable.sourceOrder eq chapterIndex) }
|
||||||
.first()[ChapterTable.id].value
|
.first()[ChapterTable.id].value
|
||||||
val meta =
|
val meta =
|
||||||
transaction { ChapterMetaTable.select { (ChapterMetaTable.ref eq chapterId) and (ChapterMetaTable.key eq key) } }.firstOrNull()
|
transaction { ChapterMetaTable.select { (ChapterMetaTable.ref eq chapterId) and (ChapterMetaTable.key eq key) } }.firstOrNull()
|
||||||
@@ -302,14 +302,14 @@ object Chapter {
|
|||||||
fun deleteChapter(mangaId: Int, chapterIndex: Int) {
|
fun deleteChapter(mangaId: Int, chapterIndex: Int) {
|
||||||
transaction {
|
transaction {
|
||||||
val chapterId =
|
val chapterId =
|
||||||
ChapterTable.select { (ChapterTable.manga eq mangaId) and (ChapterTable.chapterIndex eq chapterIndex) }
|
ChapterTable.select { (ChapterTable.manga eq mangaId) and (ChapterTable.sourceOrder eq chapterIndex) }
|
||||||
.first()[ChapterTable.id].value
|
.first()[ChapterTable.id].value
|
||||||
|
|
||||||
val chapterDir = getChapterDir(mangaId, chapterId)
|
val chapterDir = getChapterDir(mangaId, chapterId)
|
||||||
|
|
||||||
File(chapterDir).deleteRecursively()
|
File(chapterDir).deleteRecursively()
|
||||||
|
|
||||||
ChapterTable.update({ (ChapterTable.manga eq mangaId) and (ChapterTable.chapterIndex eq chapterIndex) }) {
|
ChapterTable.update({ (ChapterTable.manga eq mangaId) and (ChapterTable.sourceOrder eq chapterIndex) }) {
|
||||||
it[isDownloaded] = false
|
it[isDownloaded] = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ object Page {
|
|||||||
val source = getHttpSource(mangaEntry[MangaTable.sourceReference])
|
val source = getHttpSource(mangaEntry[MangaTable.sourceReference])
|
||||||
val chapterEntry = transaction {
|
val chapterEntry = transaction {
|
||||||
ChapterTable.select {
|
ChapterTable.select {
|
||||||
(ChapterTable.chapterIndex eq chapterIndex) and (ChapterTable.manga eq mangaId)
|
(ChapterTable.sourceOrder eq chapterIndex) and (ChapterTable.manga eq mangaId)
|
||||||
}.first()
|
}.first()
|
||||||
}
|
}
|
||||||
val chapterId = chapterEntry[ChapterTable.id].value
|
val chapterId = chapterEntry[ChapterTable.id].value
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ object ProtoBackupImport : ProtoBackupBase() {
|
|||||||
it[chapter_number] = chapter.chapter_number
|
it[chapter_number] = chapter.chapter_number
|
||||||
it[scanlator] = chapter.scanlator
|
it[scanlator] = chapter.scanlator
|
||||||
|
|
||||||
it[chapterIndex] = chaptersLength - chapter.source_order
|
it[sourceOrder] = chaptersLength - chapter.source_order
|
||||||
it[ChapterTable.manga] = mangaId
|
it[ChapterTable.manga] = mangaId
|
||||||
|
|
||||||
it[isRead] = chapter.read
|
it[isRead] = chapter.read
|
||||||
@@ -207,7 +207,7 @@ object ProtoBackupImport : ProtoBackupBase() {
|
|||||||
it[chapter_number] = chapter.chapter_number
|
it[chapter_number] = chapter.chapter_number
|
||||||
it[scanlator] = chapter.scanlator
|
it[scanlator] = chapter.scanlator
|
||||||
|
|
||||||
it[chapterIndex] = chaptersLength - chapter.source_order
|
it[sourceOrder] = chaptersLength - chapter.source_order
|
||||||
it[ChapterTable.manga] = mangaId
|
it[ChapterTable.manga] = mangaId
|
||||||
|
|
||||||
it[isRead] = chapter.read
|
it[isRead] = chapter.read
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ object DownloadManager {
|
|||||||
mangaId,
|
mangaId,
|
||||||
chapter = ChapterTable.toDataClass(
|
chapter = ChapterTable.toDataClass(
|
||||||
transaction {
|
transaction {
|
||||||
ChapterTable.select { (ChapterTable.manga eq mangaId) and (ChapterTable.chapterIndex eq chapterIndex) }
|
ChapterTable.select { (ChapterTable.manga eq mangaId) and (ChapterTable.sourceOrder eq chapterIndex) }
|
||||||
.first()
|
.first()
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ class Downloader(private val downloadQueue: CopyOnWriteArrayList<DownloadChapter
|
|||||||
}
|
}
|
||||||
download.state = Finished
|
download.state = Finished
|
||||||
transaction {
|
transaction {
|
||||||
ChapterTable.update({ (ChapterTable.manga eq download.mangaId) and (ChapterTable.chapterIndex eq download.chapterIndex) }) {
|
ChapterTable.update({ (ChapterTable.manga eq download.mangaId) and (ChapterTable.sourceOrder eq download.chapterIndex) }) {
|
||||||
it[isDownloaded] = true
|
it[isDownloaded] = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ data class ChapterDataClass(
|
|||||||
/** last read page, zero means not read/no data */
|
/** last read page, zero means not read/no data */
|
||||||
val lastReadAt: Long,
|
val lastReadAt: Long,
|
||||||
|
|
||||||
|
// TODO(v0.6.0): rename to sourceOrder
|
||||||
/** this chapter's index, starts with 1 */
|
/** this chapter's index, starts with 1 */
|
||||||
val index: Int,
|
val index: Int,
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ object ChapterTable : IntIdTable() {
|
|||||||
val lastReadAt = long("last_read_at").default(0)
|
val lastReadAt = long("last_read_at").default(0)
|
||||||
|
|
||||||
// index is reserved by a function
|
// index is reserved by a function
|
||||||
val chapterIndex = integer("index")
|
val sourceOrder = integer("source_order")
|
||||||
|
|
||||||
val isDownloaded = bool("is_downloaded").default(false)
|
val isDownloaded = bool("is_downloaded").default(false)
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ fun ChapterTable.toDataClass(chapterEntry: ResultRow) =
|
|||||||
chapterEntry[isBookmarked],
|
chapterEntry[isBookmarked],
|
||||||
chapterEntry[lastPageRead],
|
chapterEntry[lastPageRead],
|
||||||
chapterEntry[lastReadAt],
|
chapterEntry[lastReadAt],
|
||||||
chapterEntry[chapterIndex],
|
chapterEntry[sourceOrder],
|
||||||
chapterEntry[isDownloaded],
|
chapterEntry[isDownloaded],
|
||||||
chapterEntry[pageCount],
|
chapterEntry[pageCount],
|
||||||
transaction { ChapterTable.select { manga eq chapterEntry[manga].value }.count().toInt() },
|
transaction { ChapterTable.select { manga eq chapterEntry[manga].value }.count().toInt() },
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package suwayomi.tachidesk.server.database.migration
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) Contributors to the Suwayomi project
|
||||||
|
*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
import de.neonew.exposed.migrations.helpers.SQLMigration
|
||||||
|
|
||||||
|
@Suppress("ClassName", "unused")
|
||||||
|
class M0016_ChapterIndexRenameToSourceOrder : SQLMigration() {
|
||||||
|
override val sql = """
|
||||||
|
ALTER TABLE CHAPTER ALTER COLUMN INDEX RENAME TO SOURCE_ORDER;
|
||||||
|
""".trimIndent()
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user