import Foundation import SwiftData /// Lokales Cache-Model für eine einzelne Karte. Wird beim /// `DeckListStore.refresh` mitgezogen, damit die Liste der Karten /// auch offline verfügbar ist. Server bleibt Wahrheit — alle Edits /// laufen über die API, der Cache wird nur beim Re-Fetch aktualisiert. @Model final class CachedCard { @Attribute(.unique) var id: String var deckId: String var userId: String var typeRaw: String var fields: [String: String] var contentHash: String? var createdAt: Date var updatedAt: Date var lastFetchedAt: Date init(card: Card) { id = card.id deckId = card.deckId userId = card.userId typeRaw = card.type.rawValue fields = card.fields contentHash = card.contentHash createdAt = card.createdAt updatedAt = card.updatedAt lastFetchedAt = .now } func update(from card: Card) { typeRaw = card.type.rawValue fields = card.fields contentHash = card.contentHash updatedAt = card.updatedAt lastFetchedAt = .now } var type: CardType? { CardType(rawValue: typeRaw) } }