05/02 Phase B
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
// Models/LocalArea.swift
|
||||
// ----------------------
|
||||
// SwiftData model for locally cached facility areas.
|
||||
|
||||
import Foundation
|
||||
import SwiftData
|
||||
|
||||
@Model
|
||||
final class LocalArea {
|
||||
@Attribute(.unique) var serverId: Int
|
||||
var facilityServerId: Int
|
||||
var name: String
|
||||
var areaType: String
|
||||
var lastSyncedAt: Date
|
||||
|
||||
/// Back-reference to parent facility
|
||||
var facility: LocalFacility?
|
||||
|
||||
init(from api: APIArea) {
|
||||
self.serverId = api.id
|
||||
self.facilityServerId = api.facilityId
|
||||
self.name = api.name
|
||||
self.areaType = api.areaType
|
||||
self.lastSyncedAt = Date()
|
||||
}
|
||||
|
||||
func update(from api: APIArea) {
|
||||
self.name = api.name
|
||||
self.areaType = api.areaType
|
||||
self.lastSyncedAt = Date()
|
||||
}
|
||||
|
||||
/// Human-readable type label
|
||||
var areaTypeLabel: String {
|
||||
switch areaType {
|
||||
case "restroom": return "Restroom"
|
||||
case "lobby": return "Lobby"
|
||||
case "hallway": return "Hallway"
|
||||
case "office": return "Office"
|
||||
case "kitchen": return "Kitchen"
|
||||
case "storage": return "Storage"
|
||||
case "floor": return "Floor"
|
||||
case "outdoor": return "Outdoor"
|
||||
default: return "Other"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user