36 lines
817 B
Dart
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;
|
|
}
|