mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-07-07 21:04:34 -05:00
Library Update Queries and Mutations (#609)
* Add library update GraphQL endpoints * No need for data classes * UpdateLibraryManga
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
package suwayomi.tachidesk.graphql.queries
|
||||
|
||||
import org.kodein.di.DI
|
||||
import org.kodein.di.conf.global
|
||||
import org.kodein.di.instance
|
||||
import suwayomi.tachidesk.graphql.types.UpdateStatus
|
||||
import suwayomi.tachidesk.graphql.types.UpdateStatusType
|
||||
import suwayomi.tachidesk.manga.impl.update.IUpdater
|
||||
import suwayomi.tachidesk.manga.impl.update.JobStatus
|
||||
|
||||
class UpdateQuery {
|
||||
private val updater by DI.global.instance<IUpdater>()
|
||||
|
||||
fun updateStatus(): UpdateStatus {
|
||||
val status = updater.status.value
|
||||
return UpdateStatus(
|
||||
isRunning = status.running,
|
||||
pendingJobs = UpdateStatusType(status.statusMap[JobStatus.PENDING]?.map { it.id }.orEmpty()),
|
||||
runningJobs = UpdateStatusType(status.statusMap[JobStatus.RUNNING]?.map { it.id }.orEmpty()),
|
||||
completeJobs = UpdateStatusType(status.statusMap[JobStatus.COMPLETE]?.map { it.id }.orEmpty()),
|
||||
failedJobs = UpdateStatusType(status.statusMap[JobStatus.FAILED]?.map { it.id }.orEmpty())
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
package suwayomi.tachidesk.graphql.queries
|
||||
|
||||
import org.jetbrains.exposed.sql.select
|
||||
import org.jetbrains.exposed.sql.transactions.transaction
|
||||
import org.kodein.di.DI
|
||||
import org.kodein.di.conf.global
|
||||
import org.kodein.di.instance
|
||||
import suwayomi.tachidesk.graphql.types.MangaType
|
||||
import suwayomi.tachidesk.manga.impl.update.IUpdater
|
||||
import suwayomi.tachidesk.manga.impl.update.JobStatus
|
||||
import suwayomi.tachidesk.manga.impl.update.UpdaterSocket
|
||||
import suwayomi.tachidesk.manga.model.table.MangaTable
|
||||
|
||||
class UpdaterQuery {
|
||||
sealed interface UpdaterStatus {
|
||||
data class UpdaterJob(val status: JobStatus, val manga: MangaType)
|
||||
|
||||
data class Running(val jobs: Map<JobStatus, List<MangaType>>) : UpdaterStatus
|
||||
|
||||
// data class Idle
|
||||
}
|
||||
|
||||
private val updater by DI.global.instance<IUpdater>()
|
||||
|
||||
fun updaterStatus() {
|
||||
val status = updater.status.value
|
||||
if (status.running) {
|
||||
val mangaIds = status.statusMap.values.flatMap { mangas -> mangas.map { it.id } }
|
||||
val mangaMap = transaction {
|
||||
MangaTable.select { MangaTable.id inList mangaIds }
|
||||
.map { MangaType(it) }
|
||||
.associateBy { it.id }
|
||||
}
|
||||
UpdaterStatus.Running(
|
||||
status.statusMap.mapValues { (_, mangas) ->
|
||||
mangas.mapNotNull { mangaMap[it.id] }
|
||||
}
|
||||
)
|
||||
}
|
||||
UpdaterSocket
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user