Files
jadb/lib/cli/commands/create_db.dart

54 lines
1.2 KiB
Dart

import 'dart:io';
import 'package:jadb/_data_ingestion/open_local_db.dart';
import 'package:jadb/_data_ingestion/seed_database.dart';
import 'package:args/command_runner.dart';
import 'package:jadb/cli/args.dart';
class CreateDb extends Command {
final name = "create-db";
final description = "Create the database";
CreateDb() {
addLibsqliteArg(argParser);
argParser.addFlag(
'wal',
help: '''Whether to use Write-Ahead Logging (WAL) mode.
This is recommended for better performance, but may not be used with
the readonly NixOS store.
''',
defaultsTo: false,
);
}
Future<void> run() async {
if (argResults!.option('libsqlite') == null) {
print(argParser.usage);
exit(64);
}
final db = await openLocalDb(
libsqlitePath: argResults!.option('libsqlite')!,
walMode: argResults!.flag('wal'),
readWrite: true,
);
bool failed = false;
await seedData(db).then((_) {
print("Database created successfully");
}).catchError((error) {
print("Error creating database: $error");
failed = true;
}).whenComplete(() {
db.close();
});
if (failed) {
exit(1);
} else {
exit(0);
}
}
}