Files
jadb/lib/_data_ingestion/open_local_db.dart
T
2025-04-30 08:48:00 +02:00

36 lines
817 B
Dart

import 'dart:ffi';
import 'dart:io';
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
import 'package:sqlite3/open.dart';
Future<Database?> openLocalDb({
String? libsqlitePath,
String? jadbPath,
bool readWrite = false,
}) async {
if (libsqlitePath == null) {
libsqlitePath = Platform.environment['LIBSQLITE_PATH'];
}
if (jadbPath == null) {
jadbPath = Platform.environment['JADB_PATH'] ??
Directory.current.uri.resolve('jadb.sqlite').path;
}
final db = await createDatabaseFactoryFfi(
ffiInit: () =>
open.overrideForAll(() => DynamicLibrary.open(libsqlitePath!)),
).openDatabase(
jadbPath,
options: OpenDatabaseOptions(
onOpen: (db) {
db.execute("PRAGMA foreign_keys = ON");
},
readOnly: !readWrite,
),
);
return db;
}