Просмотр исходного кода

Save Glucose to CoreData. Use in statistics()

Jon Mårtensson 3 лет назад
Родитель
Сommit
b258c8c51a

+ 2 - 2
Core_Data.xcdatamodeld/Core_Data.xcdatamodel/contents

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="21513" systemVersion="22D5027d" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
-    <entity name="GlucoseDataForStats" representedClassName="GlucoseDataForStats" syncable="YES" codeGenerationType="class">
+<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="21513" systemVersion="22C65" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
+    <entity name="Readings" representedClassName="Readings" syncable="YES" codeGenerationType="class">
         <attribute name="date" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
         <attribute name="glucose" optional="YES" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="YES"/>
     </entity>

+ 6 - 0
FreeAPS.xcworkspace/contents.xcworkspacedata

@@ -2,6 +2,12 @@
 <Workspace
    version = "1.0">
    <FileRef
+      location = "group:Readings+CoreDataClass.swift">
+   </FileRef>
+   <FileRef
+      location = "group:Readings+CoreDataProperties.swift">
+   </FileRef>
+   <FileRef
       location = "group:TDD+CoreDataClass.swift">
    </FileRef>
    <FileRef

+ 4 - 4
FreeAPS/Sources/APS/APSManager.swift

@@ -684,10 +684,10 @@ final class BaseAPSManager: APSManager, Injectable {
         let preferences = settingsManager.preferences
         let currentTDD = enacted_.tdd ?? 0
 
+        // MARK: Add new data to Core Data:TDD Entity. TEST:
+        
         debug(.apsManager, "Writing TDD to CoreData")
 
-        // MARK: Add new data to Core Data:TDD Entity
-
         let nTDD = TDD(context: coredataContext)
         nTDD.timestamp = Date()
         nTDD.tdd = NSDecimalNumber(decimal: currentTDD)
@@ -906,11 +906,11 @@ final class BaseAPSManager: APSManager, Injectable {
             minimumLoopTime = 0.0
         }
 
-        let requestGFS = GlucoseDataForStats.fetchRequest() as NSFetchRequest<GlucoseDataForStats>
+        let requestGFS = Readings.fetchRequest() as NSFetchRequest<Readings>
         let sortGlucose = NSSortDescriptor(key: "date", ascending: true)
         requestGFS.sortDescriptors = [sortGlucose]
 
-        var glucose: [GlucoseDataForStats] = []
+        var glucose: [Readings] = []
 
         try? glucose = coredataContext.fetch(requestGFS)
 

+ 4 - 17
FreeAPS/Sources/APS/Storage/GlucoseStorage.swift

@@ -1,4 +1,5 @@
 import AVFAudio
+import CoreData
 import Foundation
 import SwiftDate
 import SwiftUI
@@ -37,26 +38,11 @@ final class BaseGlucoseStorage: GlucoseStorage, Injectable {
     func storeGlucose(_ glucose: [BloodGlucose]) {
         let storeGlucoseStarted = Date()
 
-        let stat_glucose = BloodGlucose(
-            _id: "",
-            sgv: nil,
-            date: 0,
-            dateString: glucose[0].dateString,
-            unfiltered: nil,
-            filtered: nil,
-            noise: nil,
-            glucose: glucose[0].glucose ?? 0,
-            type: nil
-        )
-
         processQueue.sync {
             let file = OpenAPS.Monitor.glucose
             self.storage.transaction { storage in
                 storage.append(glucose, to: file, uniqBy: \.dateString)
 
-                // Save for statistics also (only glucose, date, datestring and id)
-                storage.append(stat_glucose, to: OpenAPS.Monitor.glucose_data, uniqBy: \.dateString)
-
                 let uniqEvents = storage.retrieve(file, as: [BloodGlucose].self)?
                     .filter { $0.dateString.addingTimeInterval(24.hours.timeInterval) > Date() }
                     .sorted { $0.dateString > $1.dateString } ?? []
@@ -69,7 +55,7 @@ final class BaseGlucoseStorage: GlucoseStorage, Injectable {
                     }
                 }
 
-                // Save to glucoseForStats also.
+                // MARK: Save to CoreData. TEST
                 var bg_ = 0
                 var bgDate = Date()
 
@@ -78,7 +64,7 @@ final class BaseGlucoseStorage: GlucoseStorage, Injectable {
                     bgDate = glucose[0].dateString
                 }
                 if bg_ != 0 {
-                    let dataForStats = GlucoseDataForStats(context: coredataContext)
+                    let dataForStats = Readings(context: coredataContext)
                     dataForStats.date = bgDate
                     dataForStats.glucose = Int16(bg_)
                     try! coredataContext.save()
@@ -139,6 +125,7 @@ final class BaseGlucoseStorage: GlucoseStorage, Injectable {
                 }
             }
         }
+        print("Test time of glucoseStorage: \(-1 * storeGlucoseStarted.timeIntervalSinceNow) s")
     }
 
     func removeGlucose(ids: [String]) {

+ 4 - 0
Readings+CoreDataClass.swift

@@ -0,0 +1,4 @@
+import CoreData
+import Foundation
+
+@objc(Readings) public class Readings: NSManagedObject {}

+ 11 - 0
Readings+CoreDataProperties.swift

@@ -0,0 +1,11 @@
+import CoreData
+import Foundation
+
+public extension Readings {
+    @nonobjc class func fetchRequest() -> NSFetchRequest<Readings> {
+        NSFetchRequest<Readings>(entityName: "Readings")
+    }
+
+    @NSManaged var date: Date?
+    @NSManaged var glucose: Int16
+}