Commit 9e16eec

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2024-03-28 22:32:18
implement HealthDataStore
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent 2db34f2
health_data_store/lib/src/repositories/blood_pressure_repository.dart → health_data_store/lib/src/repositories/blood_pressure_repository_impl.dart
File renamed without changes
health_data_store/lib/src/repositories/medicine_intake_repository.dart → health_data_store/lib/src/repositories/medicine_intake_repository_impl.dart
File renamed without changes
health_data_store/lib/src/repositories/medicine_repository.dart → health_data_store/lib/src/repositories/medicine_repository_impl.dart
File renamed without changes
health_data_store/lib/src/repositories/meta_repository.dart
@@ -1,26 +0,0 @@
-import 'package:health_data_store/src/types/date_range.dart';
-
-/// The meta repository contains metadata about the stored data.
-///
-/// This includes data such as ranges in which events exist and what type of
-/// data was collected during a event.
-class MetaRepository {
-  DateRange get availableRange {
-    // TODO
-    throw UnimplementedError();
-  }
-
-  DateTime get firstEntry {
-    // TODO
-    throw UnimplementedError();
-  }
-
-  DateRange get lastEntry {
-    // TODO
-    throw UnimplementedError();
-  }
-
-  // TODO: check what is needed
-  // - Medicine entries / bp records that belong together
-
-}
health_data_store/lib/src/repositories/note_repository.dart → health_data_store/lib/src/repositories/note_repository_impl.dart
File renamed without changes
health_data_store/lib/src/health_data_store.dart
@@ -1,9 +1,19 @@
-
+import 'package:health_data_store/src/database_manager.dart';
+import 'package:health_data_store/src/repositories/blood_pressure_repository_impl.dart';
+import 'package:health_data_store/src/repositories/medicine_intake_repository_impl.dart';
+import 'package:health_data_store/src/repositories/medicine_repository_impl.dart';
+import 'package:health_data_store/src/repositories/note_repository_impl.dart';
 import 'package:sqflite_common/sqflite.dart';
 
-// TODO: document once finished
-abstract class HealthDataStore {
-  const HealthDataStore._create();
+/// Factory class for objects that provide access to the health database.
+///
+/// Ensures that the classes are instantiated for which the table schemes in the
+/// db fit and creates ensures that the db schema is created and updated where
+/// necessary.
+class HealthDataStore {
+  HealthDataStore._create(this._dbMngr);
+
+  DatabaseManager _dbMngr;
 
   /// Initializes objects from [db].
   ///
@@ -11,11 +21,26 @@ abstract class HealthDataStore {
   /// library maintains the version and is responsible for update operations.
   static Future<HealthDataStore?> load(Database db) async {
     if (!db.isOpen) return null;
-    // TODO
-    throw UnimplementedError();
+    final mngr = await DatabaseManager.load(db);
+    return HealthDataStore._create(mngr);
   }
 
-  // TODO: Future<BloodPressureRepository> getBloodPressureRepository();
-  // ...
+  /// Repository for blood pressure data.
+  BloodPressureRepository get bpRepo =>
+    BloodPressureRepository(_dbMngr.db);
+
+  /// Repository for notes.
+  NoteRepository get noteRepo =>
+    NoteRepository(_dbMngr.db);
+
+  /// Repository for medicines.
+  MedicineRepository get medRepo =>
+    MedicineRepository(_dbMngr.db);
+
+  /// Repository for intakes.
+  MedicineIntakeRepository get intakeRepo =>
+    MedicineIntakeRepository(_dbMngr.db);
 
+  // TODO: hide constructors
+  // TODO: test
 }
health_data_store/lib/health_data_store.dart
@@ -1,9 +1,11 @@
 /// Package to easily store health domain data.
-library;
+library; // TODO: doc more
 
 export 'src/health_data_store.dart';
-export 'src/repositories/blood_pressure_repository.dart';
-export 'src/repositories/medicine_repository.dart';
+export 'src/repositories/blood_pressure_repository_impl.dart';
+export 'src/repositories/medicine_intake_repository_impl.dart';
+export 'src/repositories/medicine_repository_impl.dart';
+export 'src/repositories/note_repository_impl.dart';
 export 'src/types/blood_pressure_record.dart';
 export 'src/types/date_range.dart';
 export 'src/types/medicine.dart';
health_data_store/test/src/repositories/medicine_intake_repository_test.dart
@@ -1,6 +1,5 @@
 
 import 'package:health_data_store/health_data_store.dart';
-import 'package:health_data_store/src/repositories/medicine_intake_repository.dart';
 import 'package:test/test.dart';
 
 import '../database_manager_test.dart';
health_data_store/test/src/repositories/note_repository_test.dart
@@ -1,5 +1,7 @@
-import 'package:health_data_store/health_data_store.dart';
-import 'package:health_data_store/src/repositories/note_repository.dart';
+
+import 'package:health_data_store/src/repositories/blood_pressure_repository_impl.dart';
+import 'package:health_data_store/src/repositories/note_repository_impl.dart';
+import 'package:health_data_store/src/types/date_range.dart';
 import 'package:test/test.dart';
 
 import '../database_manager_test.dart';