bin/jadb: split

This commit is contained in:
2025-04-30 08:40:01 +02:00
parent 4357485870
commit 1fdcb7a477
7 changed files with 204 additions and 163 deletions

View File

@@ -0,0 +1,41 @@
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);
}
Future<void> run() async {
if (argResults!.option('libsqlite') == null) {
print(argParser.usage);
exit(64);
}
final db = await openLocalDb(
libsqlitePath: argResults!.option('libsqlite')!,
readWrite: true,
);
if (db == null) {
print("Failed to open database");
exit(1);
}
seedData(db).then((_) {
print("Database created successfully");
}).catchError((error) {
print("Error creating database: $error");
}).whenComplete(() {
db.close();
});
}
}

View File

@@ -0,0 +1,45 @@
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);
}
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')!,
);
if (db == null) {
print("Failed to open database");
exit(1);
}
final result = await JaDBConnection(db).searchKanji('');
if (result == null) {
print("No such kanji");
} else {
print(JsonEncoder.withIndent(' ').convert(result.toJson()));
}
}
}

View File

@@ -0,0 +1,48 @@
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 QueryWord extends Command {
final name = "query-word";
final description = "Query the database for word data";
QueryWord() {
addLibsqliteArg(argParser);
addJadbArg(argParser);
}
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')!,
);
if (db == null) {
print("Failed to open database");
exit(1);
}
final result = await JaDBConnection(db).searchWord('kana');
if (result == null) {
print("Invalid search");
} else if (result.isEmpty) {
print("No matches");
} else {
print(JsonEncoder.withIndent(' ')
.convert(result.map((e) => e.toJson()).toList()));
}
}
}