Commit 8722491

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2024-06-13 09:55:08
fix pulse unit
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent 72cf954
Changed files (4)
health_data_store/lib/src/repositories/blood_pressure_repository_impl.dart
@@ -50,7 +50,7 @@ class BloodPressureRepositoryImpl extends BloodPressureRepository {
       if (record.pul != null) {
         await txn.insert('Pulse', {
           'entryID': entryID,
-          'pul': record.pul!.kPa,
+          'pul': record.pul,
         });
       }
     });
@@ -72,9 +72,9 @@ class BloodPressureRepositoryImpl extends BloodPressureRepository {
       final timeS = r['timestampUnixS'] as int;
       final newRec = BloodPressureRecord(
         time: DateTimeS.fromSecondsSinceEpoch(timeS),
-        sys: _decode(r['sys']),
-        dia: _decode(r['dia']),
-        pul: _decode(r['pul']),
+        sys: _decodePressure(r['sys']),
+        dia: _decodePressure(r['dia']),
+        pul: _decodeInt(r['pul']),
       );
       if (newRec.sys !=null || newRec.dia != null || newRec.pul != null) {
         records.add(newRec);
@@ -109,7 +109,7 @@ class BloodPressureRepositoryImpl extends BloodPressureRepository {
       if (value.dia != null)
         value.dia!.kPa,
       if (value.pul != null)
-        value.pul!.kPa,
+        value.pul,
     ]);
     if (entryResult.isEmpty) return;
     final entryID = entryResult.first['entryID'];
@@ -121,11 +121,18 @@ class BloodPressureRepositoryImpl extends BloodPressureRepository {
       await txn.delete('Pulse', where: 'entryID = ?', whereArgs: [entryID]);
   });
 
-  Pressure? _decode(Object? value) {
+  Pressure? _decodePressure(Object? value) {
     if (value is! double) return null;
     return Pressure.kPa(value);
   }
 
+  int? _decodeInt(Object? value) {
+    if (value is int) return value;
+    if (value is double) return value.toInt();
+    if (value is num) return value.toInt();
+    return null;
+  }
+
   @override
   Stream subscribe() => _controller.stream;
 
health_data_store/lib/src/types/blood_pressure_record.dart
@@ -14,7 +14,7 @@ class BloodPressureRecord with _$BloodPressureRecord {
     Pressure? sys,
     /// Diastolic value of the measurement.
     Pressure? dia,
-    /// Pulse value of the measurement.
-    Pressure? pul,
+    /// Pulse value of the measurement in bpm.
+    int? pul,
   }) = _BloodPressureRecord;
 }
health_data_store/lib/src/database_manager.dart
@@ -70,7 +70,10 @@ class DatabaseManager {
     for (final info in [
       ('Systolic','sys'),
       ('Diastolic', 'dia'),
-      ('Pulse','pul')
+      // Pulse is stored as a double because bpm could be measured over
+      // non one-minute intervalls which might be necessary to support in the
+      // future.
+      ('Pulse','pul'),
     ]) {
       await txn.execute('CREATE TABLE "${info.$1}" ('
         '"entryID"	    INTEGER NOT NULL,'
health_data_store/test/src/types/blood_pressure_record_test.dart
@@ -9,17 +9,17 @@ void main() {
       time: time,
       sys: Pressure.mmHg(123),
       dia: Pressure.mmHg(56),
-      pul: Pressure.mmHg(78),
+      pul: 78,
     );
     expect(record.time, time);
     expect(record.sys?.mmHg, 123);
     expect(record.dia?.mmHg, 56);
-    expect(record.pul?.mmHg, 78);
+    expect(record.pul, 78);
     expect(record, equals(BloodPressureRecord(
       time: time,
       sys: Pressure.mmHg(123),
       dia: Pressure.mmHg(56),
-      pul: Pressure.mmHg(78),
+      pul: 78,
     )));
   });
   test('should initialize with partial data', () {
@@ -31,12 +31,12 @@ void main() {
     expect(record.time, time);
     expect(record.sys?.mmHg, null);
     expect(record.dia?.mmHg, 56);
-    expect(record.pul?.mmHg, null);
+    expect(record.pul, null);
     expect(record, isNot(equals(BloodPressureRecord(
       time: time,
       sys: Pressure.mmHg(123),
       dia: Pressure.mmHg(56),
-      pul: Pressure.mmHg(78),
+      pul: 78,
     ))));
   });
 }
@@ -50,5 +50,5 @@ BloodPressureRecord mockRecord({
   time: time!=null ? DateTime.fromMillisecondsSinceEpoch(time) : DateTime.now(),
   sys: sys == null ? null : Pressure.mmHg(sys),
   dia: dia == null ? null : Pressure.mmHg(dia),
-  pul: pul == null ? null : Pressure.mmHg(pul),
+  pul: pul,
 );