import 'dart:convert'; import 'dart:io'; import 'package:args/command_runner.dart'; import 'package:jadb/_data_ingestion/open_local_db.dart'; import 'package:jadb/cli/args.dart'; import 'package:jadb/search.dart'; class QueryKanji extends Command { @override final name = 'query-kanji'; @override final description = 'Query the database for kanji data'; @override final invocation = 'jadb query-kanji [options] '; QueryKanji() { addLibsqliteArg(argParser); addJadbArg(argParser); } @override Future 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')!, ); if (argResults!.rest.length != 1) { print('You need to provide exactly one kanji character to search for.'); print(''); printUsage(); exit(64); } final String kanji = argResults!.rest.first.trim(); final time = Stopwatch()..start(); final result = await JaDBConnection(db).jadbSearchKanji(kanji); time.stop(); if (result == null) { print('No such kanji'); } else { print(JsonEncoder.withIndent(' ').convert(result.toJson())); } print('Query took ${time.elapsedMilliseconds}ms'); } }