import 'dart:io'; import 'package:jadb/search.dart'; import 'package:sqflite_common_ffi/sqflite_ffi.dart'; Future openLocalDb({ String? libsqlitePath, String? jadbPath, bool readWrite = false, bool verifyTablesExist = true, bool walMode = false, }) async { jadbPath ??= Platform.environment['JADB_PATH']; jadbPath ??= Directory.current.uri.resolve('jadb.sqlite').path; jadbPath = File(jadbPath).resolveSymbolicLinksSync(); if (!File(jadbPath).existsSync()) { throw Exception('JADB_PATH does not exist: $jadbPath'); } final db = await createDatabaseFactoryFfi().openDatabase( jadbPath, options: OpenDatabaseOptions( onConfigure: (db) async { if (walMode) { await db.execute('PRAGMA journal_mode = WAL'); } await db.execute('PRAGMA foreign_keys = ON'); }, readOnly: !readWrite, ), ); if (verifyTablesExist) { await db.jadbVerifyTables(); } return db; }