Complete rename across all bundle IDs, App Groups, CloudKit containers, StoreKit product IDs, data store filenames, URL schemes, logger subsystems, Swift identifiers, user-facing strings (7 languages), file names, directory names, Xcode project, schemes, assets, and documentation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
97 lines
2.2 KiB
Swift
97 lines
2.2 KiB
Swift
//
|
|
// MoodEntryModel.swift
|
|
// Reflect
|
|
//
|
|
// 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
|
|
case siri = 7
|
|
case controlCenter = 8
|
|
case liveActivity = 9
|
|
}
|
|
|
|
// MARK: - SwiftData Model
|
|
|
|
@Model
|
|
final class MoodEntryModel {
|
|
// Primary attributes - CloudKit requires default values
|
|
var forDate: Date = Date()
|
|
var moodValue: Int = 0
|
|
var timestamp: Date = Date()
|
|
var weekDay: Int = 1
|
|
var entryType: Int = 0
|
|
|
|
// Metadata - CloudKit requires default values
|
|
var canEdit: Bool = true
|
|
var canDelete: Bool = true
|
|
|
|
// Journal & Media (NEW)
|
|
var notes: String?
|
|
var photoID: UUID?
|
|
|
|
// 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,
|
|
notes: String? = nil,
|
|
photoID: UUID? = nil
|
|
) {
|
|
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
|
|
self.notes = notes
|
|
self.photoID = photoID
|
|
}
|
|
|
|
// Convenience initializer for raw values
|
|
init(
|
|
forDate: Date,
|
|
moodValue: Int,
|
|
entryType: Int,
|
|
timestamp: Date = Date(),
|
|
weekDay: Int? = nil,
|
|
canEdit: Bool = true,
|
|
canDelete: Bool = true,
|
|
notes: String? = nil,
|
|
photoID: UUID? = nil
|
|
) {
|
|
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
|
|
self.notes = notes
|
|
self.photoID = photoID
|
|
}
|
|
}
|