diff --git a/lib/search/filter_kanji.dart b/lib/search/filter_kanji.dart index b3373ca..4a00dce 100644 --- a/lib/search/filter_kanji.dart +++ b/lib/search/filter_kanji.dart @@ -1,6 +1,9 @@ import 'package:jadb/table_names/kanjidic.dart'; import 'package:sqflite_common/sqflite.dart'; +/// Filters a list of kanji characters, returning only those that exist in the database. +/// +/// If [deduplicate] is true, the returned list will deduplicate the input kanji list before returning the filtered results. Future> filterKanjiWithDbConnection( DatabaseExecutor connection, List kanji, diff --git a/lib/search/kanji_search.dart b/lib/search/kanji_search.dart index 4e8d76b..f975e95 100644 --- a/lib/search/kanji_search.dart +++ b/lib/search/kanji_search.dart @@ -3,9 +3,9 @@ import 'package:jadb/models/kanji_search/kanji_search_radical.dart'; import 'package:jadb/models/kanji_search/kanji_search_result.dart'; import 'package:jadb/table_names/kanjidic.dart'; import 'package:jadb/table_names/radkfile.dart'; -import 'package:jadb/util/romaji_transliteration.dart'; import 'package:sqflite_common/sqflite.dart'; +/// Searches for a kanji character and returns its details, or null if the kanji is not found in the database. Future searchKanjiWithDbConnection( DatabaseExecutor connection, String kanji, @@ -214,6 +214,7 @@ Future searchKanjiWithDbConnection( // TODO: Use fewer queries with `IN` clauses to reduce the number of queries +/// Searches for multiple kanji at once, returning a map of kanji to their search results. Future> searchManyKanjiWithDbConnection( DatabaseExecutor connection, Set kanji, diff --git a/lib/search/radical_search.dart b/lib/search/radical_search.dart index 0f1cf00..e0bd4e1 100644 --- a/lib/search/radical_search.dart +++ b/lib/search/radical_search.dart @@ -3,6 +3,10 @@ import 'package:sqflite_common/sqlite_api.dart'; // TODO: validate that the list of radicals all are valid radicals +/// Returns a list of radicals that are part of any kanji that contains all of the input radicals. +/// +/// This can be used to limit the choices of additional radicals provided to a user, +/// so that any choice they make will still yield at least one kanji. Future> searchRemainingRadicalsWithDbConnection( DatabaseExecutor connection, List radicals, @@ -31,6 +35,7 @@ Future> searchRemainingRadicalsWithDbConnection( return remainingRadicals; } +/// Returns a list of kanji that contain all of the input radicals. Future> searchKanjiByRadicalsWithDbConnection( DatabaseExecutor connection, List radicals, diff --git a/lib/search/word_search/word_search.dart b/lib/search/word_search/word_search.dart index bf03cc6..1d7d8ed 100644 --- a/lib/search/word_search/word_search.dart +++ b/lib/search/word_search/word_search.dart @@ -15,6 +15,7 @@ import 'package:sqflite_common/sqlite_api.dart'; enum SearchMode { Auto, English, Kanji, MixedKanji, Kana, MixedKana } +/// Searches for an input string, returning a list of results with their details. Returns null if the input string is empty. Future?> searchWordWithDbConnection( DatabaseExecutor connection, String word, { @@ -54,6 +55,7 @@ Future?> searchWordWithDbConnection( return result; } +/// Searches for an input string, returning the amount of results that the search would yield without pagination. Future searchWordCountWithDbConnection( DatabaseExecutor connection, String word, { @@ -72,6 +74,7 @@ Future searchWordCountWithDbConnection( return entryIdCount; } +/// Fetches a single word by its entry ID, returning null if not found. Future getWordByIdWithDbConnection( DatabaseExecutor connection, int id, @@ -107,6 +110,7 @@ Future getWordByIdWithDbConnection( return result.firstOrNull; } +/// Fetches multiple words by their entry IDs, returning a map from entry ID to result. Future> getWordsByIdsWithDbConnection( DatabaseExecutor connection, Set ids,