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 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); } } }