59 lines
1.3 KiB
Dart
59 lines
1.3 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:args/command_runner.dart';
|
|
import 'package:jadb/_data_ingestion/open_local_db.dart';
|
|
import 'package:jadb/_data_ingestion/seed_database.dart';
|
|
import 'package:jadb/cli/args.dart';
|
|
|
|
class CreateDb extends Command {
|
|
@override
|
|
final name = 'create-db';
|
|
@override
|
|
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,
|
|
);
|
|
}
|
|
|
|
@override
|
|
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);
|
|
}
|
|
}
|
|
}
|