models/createEmptyDb: init

This commit is contained in:
2025-06-23 21:11:42 +02:00
parent e0a35bdef9
commit 78f546fa28
3 changed files with 61 additions and 1 deletions

View File

@@ -0,0 +1,27 @@
import 'dart:io';
import 'dart:isolate';
import 'package:path/path.dart';
import 'package:sqflite_common/sqlite_api.dart';
String migrationDirPath() {
final packageUri = Uri.parse('package:jadb/');
final packagePath = Isolate.resolvePackageUriSync(packageUri);
return packagePath!.resolve('../migrations').toFilePath();
}
Future<void> createEmptyDb(DatabaseExecutor db) async {
List<String> migrationFiles = [];
for (final file in Directory(migrationDirPath()).listSync()) {
if (file is File && file.path.endsWith('.sql')) {
migrationFiles.add(file.path);
}
}
migrationFiles.sort((a, b) => basename(a).compareTo(basename(b)));
for (final file in migrationFiles) {
final sql = await File(file).readAsString();
await db.execute(sql);
}
}

View File

@@ -4,7 +4,7 @@ version: 1.0.0
homepage: https://git.pvv.ntnu.no/oysteikt/jadb
environment:
sdk: '>=3.0.0 <4.0.0'
sdk: '>=3.2.0 <4.0.0'
dependencies:
args: ^2.7.0

View File

@@ -0,0 +1,33 @@
import 'dart:ffi';
import 'dart:io';
import 'package:jadb/models/create_empty_db.dart';
import 'package:jadb/search.dart';
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
import 'package:test/test.dart';
import 'package:sqlite3/open.dart';
Future<DatabaseExecutor> setup_inmemory_database() async {
final libsqlitePath = Platform.environment['LIBSQLITE_PATH'];
if (libsqlitePath == null) {
throw Exception("LIBSQLITE_PATH is not set");
}
final db_connection = await createDatabaseFactoryFfi(
ffiInit: () =>
open.overrideForAll(() => DynamicLibrary.open(libsqlitePath)),
).openDatabase(':memory:');
return db_connection;
}
void main() {
test("Create empty db", () async {
final db = await setup_inmemory_database();
await createEmptyDb(db);
await db.jadbVerifyTables();
});
}