diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/TrackMutation.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/TrackMutation.kt index 846553b4..5103d21b 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/TrackMutation.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/mutations/TrackMutation.kt @@ -135,6 +135,34 @@ class TrackMutation { } } + data class FetchTrackInput( + val clientMutationId: String? = null, + val recordId: Int, + ) + + data class FetchTrackPayload( + val clientMutationId: String?, + val trackRecord: TrackRecordType, + ) + + fun fetchTrack(input: FetchTrackInput): CompletableFuture { + val (clientMutationId, recordId) = input + + return future { + Track.refresh(recordId) + val trackRecord = + transaction { + TrackRecordTable.select { + TrackRecordTable.id eq recordId + }.first() + } + FetchTrackPayload( + clientMutationId, + TrackRecordType(trackRecord), + ) + } + } + data class UnbindTrackInput( val clientMutationId: String? = null, val recordId: Int, diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/Track.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/Track.kt index 8401768a..61c62ae5 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/Track.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/track/Track.kt @@ -187,6 +187,19 @@ object Track { } } + suspend fun refresh(recordId: Int) { + val recordDb = + transaction { + TrackRecordTable.select { TrackRecordTable.id eq recordId }.first() + } + + val tracker = TrackerManager.getTracker(recordDb[TrackRecordTable.trackerId])!! + + val track = recordDb.toTrack() + tracker.refresh(track) + upsertTrackRecord(track) + } + suspend fun unbind( recordId: Int, deleteRemoteTrack: Boolean? = false,