mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-07-03 10:54:38 -05:00
Handle too long page image urls (#1544)
Attempted fix of 3ff29aa38a might not work, because there is no guarantee that the extension supports retrieving a specific page.
This commit is contained in:
@@ -112,14 +112,11 @@ object Page {
|
|||||||
|
|
||||||
if (pageEntry[PageTable.imageUrl] == null) {
|
if (pageEntry[PageTable.imageUrl] == null) {
|
||||||
val trueImageUrl = getTrueImageUrl(tachiyomiPage, source)
|
val trueImageUrl = getTrueImageUrl(tachiyomiPage, source)
|
||||||
if (trueImageUrl.length <= 2048) {
|
transaction {
|
||||||
transaction {
|
PageTable.update({ (PageTable.chapter eq chapterId) and (PageTable.index eq index) }) {
|
||||||
PageTable.update({ (PageTable.chapter eq chapterId) and (PageTable.index eq index) }) {
|
it[imageUrl] = trueImageUrl
|
||||||
it[imageUrl] = trueImageUrl
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tachiyomiPage.imageUrl = trueImageUrl
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val fileName = getPageName(index, chapterEntry[ChapterTable.pageCount])
|
val fileName = getPageName(index, chapterEntry[ChapterTable.pageCount])
|
||||||
|
|||||||
@@ -182,13 +182,7 @@ private class ChapterForDownload(
|
|||||||
PageTable.batchInsert(pageList) { page ->
|
PageTable.batchInsert(pageList) { page ->
|
||||||
this[PageTable.index] = page.index
|
this[PageTable.index] = page.index
|
||||||
this[PageTable.url] = page.url
|
this[PageTable.url] = page.url
|
||||||
// Only store imageUrl if it's not too long to prevent database constraint violations
|
this[PageTable.imageUrl] = page.imageUrl
|
||||||
this[PageTable.imageUrl] =
|
|
||||||
if (page.imageUrl != null && page.imageUrl!!.length <= 2048) {
|
|
||||||
page.imageUrl
|
|
||||||
} else {
|
|
||||||
null
|
|
||||||
}
|
|
||||||
this[PageTable.chapter] = chapterId
|
this[PageTable.chapter] = chapterId
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import org.jetbrains.exposed.sql.ReferenceOption
|
|||||||
object PageTable : IntIdTable() {
|
object PageTable : IntIdTable() {
|
||||||
val index = integer("index")
|
val index = integer("index")
|
||||||
val url = varchar("url", 2048)
|
val url = varchar("url", 2048)
|
||||||
val imageUrl = varchar("image_url", 2048).nullable()
|
val imageUrl = varchar("image_url", Integer.MAX_VALUE).nullable()
|
||||||
|
|
||||||
val chapter = reference("chapter", ChapterTable, ReferenceOption.CASCADE)
|
val chapter = reference("chapter", ChapterTable, ReferenceOption.CASCADE)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
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 M0050_FixHandlingOfTooLongPageImageUrls : SQLMigration() {
|
||||||
|
override val sql: String =
|
||||||
|
"""
|
||||||
|
ALTER TABLE PAGE DROP CONSTRAINT UC_PAGE;
|
||||||
|
ALTER TABLE PAGE ADD CONSTRAINT UC_PAGE UNIQUE (INDEX, CHAPTER);
|
||||||
|
|
||||||
|
ALTER TABLE PAGE ALTER COLUMN IMAGE_URL VARCHAR; -- the default length is `Integer.MAX_VALUE`
|
||||||
|
""".trimIndent()
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user