21 lines
606 B
Swift
21 lines
606 B
Swift
|
|
import Foundation
|
||
|
|
|
||
|
|
enum NASConnectionState: String, Codable {
|
||
|
|
case connected // manifest loaded, comparison succeeded
|
||
|
|
case offline // NAS unreachable
|
||
|
|
case unknown // not yet checked
|
||
|
|
}
|
||
|
|
|
||
|
|
struct BackupStatusSnapshot: Codable {
|
||
|
|
var phoneTotal: Int = 0
|
||
|
|
var alreadySafe: Int = 0
|
||
|
|
var nasArchiveTotal: Int = 0
|
||
|
|
var lastCheckedAt: Date?
|
||
|
|
var connectionState: NASConnectionState = .unknown
|
||
|
|
|
||
|
|
// Derived — invariant: alreadySafe + needBackup == phoneTotal (always)
|
||
|
|
var needBackup: Int { max(0, phoneTotal - alreadySafe) }
|
||
|
|
|
||
|
|
static let empty = BackupStatusSnapshot()
|
||
|
|
}
|