Support Custom Repos (#803)

* Support custom repos

* Fix migration

* Make extension after update optional
This commit is contained in:
Mitchell Syer
2024-01-05 19:14:09 -05:00
committed by GitHub
parent abf1af41a3
commit 230427e758
19 changed files with 149 additions and 22 deletions

View File

@@ -20,7 +20,7 @@ class ExtensionMutation {
data class UpdateExtensionPayload(
val clientMutationId: String?,
val extension: ExtensionType,
val extension: ExtensionType?,
)
data class UpdateExtensionInput(
@@ -77,7 +77,8 @@ class ExtensionMutation {
}.thenApply {
val extension =
transaction {
ExtensionType(ExtensionTable.select { ExtensionTable.pkgName eq id }.first())
ExtensionTable.select { ExtensionTable.pkgName eq id }.firstOrNull()
?.let { ExtensionType(it) }
}
UpdateExtensionPayload(

View File

@@ -55,6 +55,9 @@ class SettingsMutation {
updateSetting(settings.excludeEntryWithUnreadChapters, serverConfig.excludeEntryWithUnreadChapters)
updateSetting(settings.autoDownloadAheadLimit, serverConfig.autoDownloadAheadLimit)
// extension
updateSetting(settings.extensionRepos, serverConfig.extensionRepos)
// requests
updateSetting(settings.maxSourcesInParallel, serverConfig.maxSourcesInParallel)

View File

@@ -82,6 +82,7 @@ class ExtensionQuery {
}
data class ExtensionCondition(
val repo: String? = null,
val apkName: String? = null,
val iconUrl: String? = null,
val name: String? = null,
@@ -96,6 +97,7 @@ class ExtensionQuery {
) : HasGetOp {
override fun getOp(): Op<Boolean>? {
val opAnd = OpAnd()
opAnd.eq(repo, ExtensionTable.repo)
opAnd.eq(apkName, ExtensionTable.apkName)
opAnd.eq(iconUrl, ExtensionTable.iconUrl)
opAnd.eq(name, ExtensionTable.name)
@@ -112,6 +114,7 @@ class ExtensionQuery {
}
data class ExtensionFilter(
val repo: StringFilter? = null,
val apkName: StringFilter? = null,
val iconUrl: StringFilter? = null,
val name: StringFilter? = null,
@@ -129,6 +132,7 @@ class ExtensionQuery {
) : Filter<ExtensionFilter> {
override fun getOpList(): List<Op<Boolean>> {
return listOfNotNull(
andFilterWithCompareString(ExtensionTable.repo, repo),
andFilterWithCompareString(ExtensionTable.apkName, apkName),
andFilterWithCompareString(ExtensionTable.iconUrl, iconUrl),
andFilterWithCompareString(ExtensionTable.name, name),

View File

@@ -20,6 +20,7 @@ import suwayomi.tachidesk.manga.model.table.ExtensionTable
import java.util.concurrent.CompletableFuture
class ExtensionType(
val repo: String?,
val apkName: String,
val iconUrl: String,
val name: String,
@@ -33,6 +34,7 @@ class ExtensionType(
val isObsolete: Boolean,
) : Node {
constructor(row: ResultRow) : this(
repo = row[ExtensionTable.repo],
apkName = row[ExtensionTable.apkName],
iconUrl = Extension.getExtensionIconUrl(row[ExtensionTable.apkName]),
name = row[ExtensionTable.name],

View File

@@ -8,6 +8,7 @@
package suwayomi.tachidesk.graphql.types
import com.expediagroup.graphql.server.extensions.getValueFromDataLoader
import eu.kanade.tachiyomi.source.model.UpdateStrategy
import graphql.schema.DataFetchingEnvironment
import org.jetbrains.exposed.sql.ResultRow
import suwayomi.tachidesk.graphql.server.primitives.Cursor
@@ -37,6 +38,7 @@ class MangaType(
val status: MangaStatus,
val inLibrary: Boolean,
val inLibraryAt: Long,
val updateStrategy: UpdateStrategy,
val realUrl: String?,
var lastFetchedAt: Long?, // todo
var chaptersLastFetchedAt: Long?, // todo
@@ -73,6 +75,7 @@ class MangaType(
MangaStatus.valueOf(row[MangaTable.status]),
row[MangaTable.inLibrary],
row[MangaTable.inLibraryAt],
UpdateStrategy.valueOf(row[MangaTable.updateStrategy]),
row[MangaTable.realUrl],
row[MangaTable.lastFetchedAt],
row[MangaTable.chaptersLastFetchedAt],
@@ -92,6 +95,7 @@ class MangaType(
MangaStatus.valueOf(dataClass.status),
dataClass.inLibrary,
dataClass.inLibraryAt,
dataClass.updateStrategy,
dataClass.realUrl,
dataClass.lastFetchedAt,
dataClass.chaptersLastFetchedAt,

View File

@@ -40,6 +40,9 @@ interface Settings : Node {
val excludeEntryWithUnreadChapters: Boolean?
val autoDownloadAheadLimit: Int?
// extension
val extensionRepos: List<String>?
// requests
val maxSourcesInParallel: Int?
@@ -90,6 +93,8 @@ data class PartialSettingsType(
override val autoDownloadNewChapters: Boolean?,
override val excludeEntryWithUnreadChapters: Boolean?,
override val autoDownloadAheadLimit: Int?,
// extension
override val extensionRepos: List<String>?,
// requests
override val maxSourcesInParallel: Int?,
// updater
@@ -135,6 +140,8 @@ class SettingsType(
override val autoDownloadNewChapters: Boolean,
override val excludeEntryWithUnreadChapters: Boolean,
override val autoDownloadAheadLimit: Int,
// extension
override val extensionRepos: List<String>,
// requests
override val maxSourcesInParallel: Int,
// updater
@@ -179,6 +186,8 @@ class SettingsType(
config.autoDownloadNewChapters.value,
config.excludeEntryWithUnreadChapters.value,
config.autoDownloadAheadLimit.value,
// extension
config.extensionRepos.value,
// requests
config.maxSourcesInParallel.value,
// updater