models/createEmptyDb: init
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
33
test/models/create_empty_db_test.dart
Normal file
33
test/models/create_empty_db_test.dart
Normal 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();
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user