TeraRestoreRecovery.swift (1714B)
1 import Foundation 2 3 enum TeraRestorePhase: Sendable, Equatable { case held, reviewed, resumed } 4 enum TeraRestoreObservation: Sendable, Equatable { case observed, notObserved, incomplete } 5 6 struct TeraRestoreTarget: Sendable, Equatable { 7 let draftID: String 8 let eventID: String 9 let targetFingerprint: String 10 let observation: TeraRestoreObservation? 11 } 12 13 struct TeraRestoreStatus: Sendable, Equatable { 14 let attemptID: String 15 let phase: TeraRestorePhase 16 let targets: [TeraRestoreTarget] 17 } 18 19 extension TeraRuntimeClient { 20 func restoreStatus() async throws -> TeraRestoreStatus? { 21 try await addOperation("runtime.restore.status") { try await $0.restoreStatus() } 22 } 23 24 func reconcileRestoredTarget(_ target: TeraRestoreTarget) async throws { 25 try await addOperation("runtime.restore.reconcile") { try await $0.reconcileRestoredTarget(target) } 26 } 27 28 func reviewRestoredWork() async throws -> String { 29 try await addOperation("runtime.restore.review") { try await $0.reviewRestoredWork() } 30 } 31 32 func resumeRestoredWork(reviewedInventory: String) async throws { 33 try await addOperation("runtime.restore.resume") { try await $0.resumeRestoredWork(reviewedInventory: reviewedInventory) } 34 } 35 } 36 37 extension TeraRuntimeBackend { 38 func restoreStatus() async throws -> TeraRestoreStatus? { 39 throw TeraComposerAcknowledgment.unconfirmed 40 } 41 42 func reconcileRestoredTarget(_: TeraRestoreTarget) async throws { 43 throw TeraComposerAcknowledgment.unconfirmed 44 } 45 46 func reviewRestoredWork() async throws -> String { 47 throw TeraComposerAcknowledgment.unconfirmed 48 } 49 50 func resumeRestoredWork(reviewedInventory _: String) async throws { 51 throw TeraComposerAcknowledgment.unconfirmed 52 } 53 }