db.dart 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import 'package:vital_local_database/index.dart';
  2. import 'entities/patient.dart';
  3. import 'entities/diagnosis.dart';
  4. import 'repositories/interfaces/diagnosis.dart';
  5. import 'repositories/interfaces/patient.dart';
  6. import 'repositories/diagnosis.dart';
  7. import 'repositories/patient.dart';
  8. /// vital 本地数据库对象
  9. final db = VitalDatabaseAccessor();
  10. /// vital本地数据库访问器
  11. class VitalDatabaseAccessor
  12. extends BaseDbAccessor<VitalDatabaseRepositoryStore> {
  13. final _store = VitalDatabaseRepositoryStore();
  14. final _connection = SqliteConnection(path: "vital.db");
  15. late final IDatabase _database;
  16. @override
  17. IDatabase get database => _database;
  18. @override
  19. VitalDatabaseRepositoryStore get repositories => _store;
  20. /// 初始化
  21. Future<void> init() async {
  22. _database = await _connection.open();
  23. await _checkTables();
  24. _store.regRepository<IPatientRepository>(PatientRepository(database));
  25. _store.regRepository<IDiagnosisRepository>(DiagnosisRepository(database));
  26. }
  27. Future<void> _checkTables() async {
  28. // await database.execute("DROP TABLE IF EXISTS Patients;");
  29. await database.execute(PatientEntity.TABLE_CREATE_SQL);
  30. await database.execute(DiagnosisEntity.TABLE_CREATE_SQL);
  31. }
  32. void dispose() {
  33. _connection.close();
  34. }
  35. }
  36. class VitalDatabaseRepositoryStore extends BaseDbAccessorRepositoryStore {
  37. /// 居民仓储
  38. IPatientRepository get patient => findRepository<IPatientRepository>()!;
  39. /// 检测记录仓储
  40. IDiagnosisRepository get diagnosis => findRepository<IDiagnosisRepository>()!;
  41. }