TeraGeneratedRestoreRecovery.swift (1897B)
1 import TeraKitBindings 2 3 extension TeraGeneratedRuntimeBackend { 4 func restoreStatus() async throws -> TeraRestoreStatus? { 5 do { 6 guard let value = try await runtime.applicationRestoreStatus() else { return nil } 7 let phase: TeraRestorePhase = switch value.phase { 8 case .held: .held 9 case .reviewed: .reviewed 10 case .resumed: .resumed 11 } 12 return TeraRestoreStatus(attemptID: value.attemptId, phase: phase, targets: value.targets.map(Self.restoreTarget)) 13 } catch { throw TeraGeneratedRuntimeFailure.from(error) } 14 } 15 16 func reconcileRestoredTarget(_ target: TeraRestoreTarget) async throws { 17 do { 18 let value = try await runtime.reconcileRestoredTarget(draftId: target.draftID, targetFingerprint: target.targetFingerprint) 19 guard value.draftId == target.draftID, value.eventId == target.eventID, 20 value.targetFingerprint == target.targetFingerprint else { throw TeraComposerAcknowledgment.unconfirmed } 21 } catch { throw TeraGeneratedRuntimeFailure.from(error) } 22 } 23 24 func reviewRestoredWork() async throws -> String { 25 do { return try await runtime.reviewRestoredWork() } catch { throw TeraGeneratedRuntimeFailure.from(error) } 26 } 27 28 func resumeRestoredWork(reviewedInventory: String) async throws { 29 do { try await runtime.resumeRestoredWork(reviewedInventory: reviewedInventory) } catch { throw TeraGeneratedRuntimeFailure.from(error) } 30 } 31 32 private static func restoreTarget(_ value: FfiRestoreTarget) -> TeraRestoreTarget { 33 let observation: TeraRestoreObservation? = value.observation.map { 34 switch $0 { 35 case .observed: .observed 36 case .notObserved: .notObserved 37 case .incomplete: .incomplete 38 } 39 } 40 return TeraRestoreTarget(draftID: value.draftId, eventID: value.eventId, 41 targetFingerprint: value.targetFingerprint, observation: observation) 42 } 43 }