Commit 8722491
Changed files (4)
health_data_store
lib
src
test
src
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,
);