| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- import 'dart:io';
- import 'dart:developer' as dev;
- 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<String> ensureDbReady() async {
- String dirPath;
- if (Platform.isAndroid) {
- final extDir = Directory(AppConstants.kAndroidDbDir);
- if (!await extDir.exists()) {
- await extDir.create(recursive: true);
- }
- dirPath = extDir.path;
- } else {
- final dir = await getApplicationDocumentsDirectory();
- dirPath = dir.path;
- }
- final dbFile = File(p.join(dirPath, 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 (e) {
- dev.log('Errore copia seed DB: $e');
- }
- }
- if (!await dbFile.exists()) {
- throw Exception(
- 'Impossibile creare il file database in $dirPath',
- );
- }
- return dirPath;
- }
- Future<bool> 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;
- }
|