// // MoodEntryModel.swift // Feels // // SwiftData model replacing Core Data MoodEntry // import Foundation import SwiftData // MARK: - Entry Type Enum enum EntryType: Int, Codable { case listView = 0 case widget = 1 case watch = 2 case shortcut = 3 case filledInMissing = 4 case notification = 5 case header = 6 } // MARK: - SwiftData Model @Model final class MoodEntryModel { // Primary attributes var forDate: Date var moodValue: Int var timestamp: Date var weekDay: Int var entryType: Int // Metadata var canEdit: Bool var canDelete: Bool // Computed properties var mood: Mood { Mood(rawValue: moodValue) ?? .missing } var moodString: String { mood.strValue } init( forDate: Date, mood: Mood, entryType: EntryType, canEdit: Bool = true, canDelete: Bool = true ) { self.forDate = forDate self.moodValue = mood.rawValue self.timestamp = Date() self.weekDay = Calendar.current.component(.weekday, from: forDate) self.entryType = entryType.rawValue self.canEdit = canEdit self.canDelete = canDelete } // Convenience initializer for raw values init( forDate: Date, moodValue: Int, entryType: Int, timestamp: Date = Date(), weekDay: Int? = nil, canEdit: Bool = true, canDelete: Bool = true ) { self.forDate = forDate self.moodValue = moodValue self.timestamp = timestamp self.weekDay = weekDay ?? Calendar.current.component(.weekday, from: forDate) self.entryType = entryType self.canEdit = canEdit self.canDelete = canDelete } }