import 'dart:io'; import 'package:drift/native.dart'; import 'package:drift/drift.dart'; import 'package:path/path.dart' as p; import 'package:path_provider/path_provider.dart'; import 'package:flutter/services.dart' show rootBundle; import '../core/constants.dart'; QueryExecutor createDb(String dirPath, String dbName) { return NativeDatabase( File(p.join(dirPath, dbName)), logStatements: true, ); } Future ensureDbReady() async { final dir = await getApplicationDocumentsDirectory(); final dbFile = File(p.join(dir.path, AppConstants.kDbName)); if (!await dbFile.exists()) { try { final data = await rootBundle.load(AppConstants.kAssetsDbPath); await dbFile.create(recursive: true); await dbFile.writeAsBytes(data.buffer.asUint8List()); } catch (_) { // No seed DB in assets, will create empty } } return dir.path; } Future isDatabaseEmpty(String dirPath) async { final dbFile = File(p.join(dirPath, AppConstants.kDbName)); if (!await dbFile.exists()) return true; final stat = await dbFile.stat(); return stat.size < 1024; }