52 lines
1.2 KiB
Dart
52 lines
1.2 KiB
Dart
import 'dart:convert';
|
|
import 'dart:io';
|
|
|
|
import 'package:jadb/_data_ingestion/open_local_db.dart';
|
|
import 'package:jadb/cli/args.dart';
|
|
import 'package:jadb/search.dart';
|
|
|
|
import 'package:args/command_runner.dart';
|
|
|
|
class QueryKanji extends Command {
|
|
final name = "query-kanji";
|
|
final description = "Query the database for kanji data";
|
|
|
|
QueryKanji() {
|
|
addLibsqliteArg(argParser);
|
|
addJadbArg(argParser);
|
|
argParser.addOption(
|
|
'kanji',
|
|
abbr: 'k',
|
|
help: 'The kanji to search for.',
|
|
valueHelp: 'KANJI',
|
|
);
|
|
}
|
|
|
|
Future<void> run() async {
|
|
if (argResults!.option('libsqlite') == null ||
|
|
argResults!.option('jadb') == null) {
|
|
print(argParser.usage);
|
|
exit(64);
|
|
}
|
|
|
|
final db = await openLocalDb(
|
|
jadbPath: argResults!.option('jadb')!,
|
|
libsqlitePath: argResults!.option('libsqlite')!,
|
|
);
|
|
|
|
final time = Stopwatch()..start();
|
|
final result = await JaDBConnection(db).searchKanji(
|
|
argResults!.option('kanji') ?? '漢',
|
|
);
|
|
time.stop();
|
|
|
|
if (result == null) {
|
|
print("No such kanji");
|
|
} else {
|
|
print(JsonEncoder.withIndent(' ').convert(result.toJson()));
|
|
}
|
|
|
|
print("Query took ${time.elapsedMilliseconds}ms");
|
|
}
|
|
}
|