Files
Reflect/Shared/Persisence/DataControllerDELETE.swift
Trey t f822927e98 Add interactive widget voting and fix warnings/bugs
Widget Features:
- Add inline voting to timeline widget when no entry exists for today
- Show random prompt from notification strings in voting mode
- Update vote widget to use simple icon style for selection
- Make stats bar full width in voted state view
- Add Localizable.strings to widget extension target

Bug Fixes:
- Fix inverted date calculation in InsightsViewModel streak logic
- Replace force unwraps with safe optional handling in widgets
- Replace fatalError calls with graceful error handling
- Fix CSV import safety in SettingsView

Warning Fixes:
- Add @retroactive to Color and Date extension conformances
- Update deprecated onChange(of:perform:) to new syntax
- Replace deprecated applicationIconBadgeNumber with setBadgeCount
- Replace deprecated UIApplication.shared.windows API
- Add @preconcurrency for Swift 6 protocol conformances
- Add missing widget family cases to switch statement
- Remove unused variables and #warning directives

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 16:23:12 -06:00

41 lines
1.1 KiB
Swift

//
// DataControllerDELETE.swift
// Feels
//
// SwiftData DELETE operations.
//
import SwiftData
import Foundation
extension DataController {
func clearDB() {
do {
try modelContext.delete(model: MoodEntryModel.self)
saveAndRunDataListeners()
} catch {
print("Failed to clear database: \(error)")
}
}
func deleteLast(numberOfEntries: Int) {
guard let startDate = Calendar.current.date(byAdding: .day, value: -numberOfEntries, to: Date()) else { return }
let entries = getData(startDate: startDate, endDate: Date(), includedDays: [])
for entry in entries {
modelContext.delete(entry)
}
save()
}
func deleteRandomFromLast(numberOfEntries: Int) {
guard let startDate = Calendar.current.date(byAdding: .day, value: -numberOfEntries, to: Date()) else { return }
let entries = getData(startDate: startDate, endDate: Date(), includedDays: [])
for entry in entries where Bool.random() {
modelContext.delete(entry)
}
save()
}
}