import Foundation import SwiftData // CloudKit-compatible (2.0): no unique constraints, inline defaults everywhere, // and the relationship stored as optional (CloudKit requires it). `slots` keeps // its name so existing stores lightweight-migrate; use `slotList` in code. @Model final class WeekPlan { var id: UUID = UUID() var weekStartDate: Date = Date() var createdAt: Date = Date() var updatedAt: Date = Date() var userRating: Int = 0 // 0 = unrated, 1 = liked, -1 = disliked @Relationship(deleteRule: .cascade) var slots: [MealSlot]? = [] /// Non-optional facade over the CloudKit-required optional relationship. var slotList: [MealSlot] { get { slots ?? [] } set { slots = newValue } } init( id: UUID = UUID(), weekStartDate: Date, slots: [MealSlot] = [], createdAt: Date = Date(), updatedAt: Date = Date() ) { self.id = id self.weekStartDate = weekStartDate self.slots = slots self.createdAt = createdAt self.updatedAt = updatedAt self.userRating = 0 } }