Files
jadb/lib/_data_ingestion/open_local_db.dart

42 lines
1020 B
Dart

import 'dart:io';
import 'package:jadb/search.dart';
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
Future<Database> 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;
}