bin/jadb: split
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user