// // DataControllerHelper.swift // Feels // // SwiftData helper and test data operations. // import SwiftData import Foundation extension DataController { func randomEntries(count: Int) -> [MoodEntryModel] { var entries = [MoodEntryModel]() for idx in 0.. MoodEntryModel { let entry = MoodEntryModel( forDate: date, moodValue: mood.rawValue, entryType: EntryType.listView.rawValue, canEdit: false, canDelete: false ) return entry } func populateTestData() { clearDB() for idx in 1..<1000 { let date = Calendar.current.date(byAdding: .day, value: -idx, to: Date())! var moodValue = Int.random(in: 3...4) if Int.random(in: 0...400) % 5 == 0 { moodValue = Int.random(in: 0...4) } let entry = MoodEntryModel( forDate: date, mood: Mood(rawValue: moodValue) ?? .average, entryType: .listView ) modelContext.insert(entry) } saveAndRunDataListeners() } #if DEBUG func populate2YearsData() { clearDB() for idx in 1...730 { let date = Calendar.current.date(byAdding: .day, value: -idx, to: Date())! var moodValue = Int.random(in: 3...4) if Int.random(in: 0...400) % 5 == 0 { moodValue = Int.random(in: 0...4) } let entry = MoodEntryModel( forDate: date, mood: Mood(rawValue: moodValue) ?? .average, entryType: .listView ) modelContext.insert(entry) } saveAndRunDataListeners() } #endif func longestStreak() -> [MoodEntryModel] { let descriptor = FetchDescriptor( sortBy: [SortDescriptor(\.forDate, order: .forward)] ) return (try? modelContext.fetch(descriptor)) ?? [] } }