Allow deletion of measurements

This commit is contained in:
Christoph Hagen
2023-06-13 17:14:57 +02:00
parent f731927dcd
commit 01a3aac91b
17 changed files with 239 additions and 76 deletions

View File

@ -83,6 +83,10 @@ final class TemperatureStorage: ObservableObject {
String(format: "%08d.bin", index)
}
private func fileUrl(for dateIndex: Int) -> URL {
storageFolder.appendingPathComponent(fileName(for: dateIndex))
}
private func fileUrl(for fileName: String) -> URL {
storageFolder.appendingPathComponent(fileName)
}
@ -148,6 +152,21 @@ final class TemperatureStorage: ObservableObject {
updateLastMeasurements(measurements)
}
func removeMeasurements(for dateIndex: Int) {
let fileUrl = fileUrl(for: dateIndex)
guard fm.fileExists(atPath: fileUrl.path) else {
print("No measurements for \(fileUrl.lastPathComponent)")
return
}
do {
try fm.removeItem(at: fileUrl)
dailyMeasurementCounts = dailyMeasurementCounts.filter { $0.dateIndex != dateIndex }
recentMeasurements = recentMeasurements.filter { $0.date.dateIndex != dateIndex }
} catch {
print("Failed to delete \(fileUrl.lastPathComponent): \(error)")
}
}
/**
- Returns: The number of new points
*/
@ -245,7 +264,7 @@ final class TemperatureStorage: ObservableObject {
private extension Array where Element == TemperatureMeasurement {
@discardableResult
mutating func insert(_ measurement: TemperatureMeasurement) -> Bool {
mutating func insertIntoSorted(_ measurement: TemperatureMeasurement) -> Bool {
guard !contains(measurement) else {
return false
}