db_connector_io.dart 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. import 'dart:io';
  2. import 'package:drift/native.dart';
  3. import 'package:drift/drift.dart';
  4. import 'package:path/path.dart' as p;
  5. import 'package:path_provider/path_provider.dart';
  6. import 'package:flutter/services.dart' show rootBundle;
  7. import '../core/constants.dart';
  8. QueryExecutor createDb(String dirPath, String dbName) {
  9. return NativeDatabase(File(p.join(dirPath, dbName)));
  10. }
  11. Future<String> ensureDbReady() async {
  12. final dir = await getApplicationDocumentsDirectory();
  13. final dbFile = File(p.join(dir.path, AppConstants.kDbName));
  14. if (!await dbFile.exists()) {
  15. try {
  16. final data = await rootBundle.load(AppConstants.kAssetsDbPath);
  17. await dbFile.create(recursive: true);
  18. await dbFile.writeAsBytes(data.buffer.asUint8List());
  19. } catch (_) {
  20. // No seed DB in assets, will create empty
  21. }
  22. }
  23. return dir.path;
  24. }
  25. Future<bool> isDatabaseEmpty(String dirPath) async {
  26. final dbFile = File(p.join(dirPath, AppConstants.kDbName));
  27. if (!await dbFile.exists()) return true;
  28. final stat = await dbFile.stat();
  29. return stat.size < 1024;
  30. }