diff --git a/lib/search.dart b/lib/search.dart index e95184c..35cef5a 100644 --- a/lib/search.dart +++ b/lib/search.dart @@ -19,6 +19,10 @@ extension JaDBConnection on DatabaseExecutor { Future jadbSearchKanji(String kanji) => searchKanjiWithDbConnection(this, kanji); + /// Search for a kanji in the database. + Future> jadbGetManyKanji(Set kanji) => + searchManyKanjiWithDbConnection(this, kanji); + /// Filter a list of characters, and return the ones that are listed in the kanji dictionary. Future> filterKanji( List kanji, { diff --git a/lib/search/kanji_search.dart b/lib/search/kanji_search.dart index b1d8ce2..d7ad8e8 100644 --- a/lib/search/kanji_search.dart +++ b/lib/search/kanji_search.dart @@ -219,3 +219,25 @@ Future searchKanjiWithDbConnection( dictionaryReferences: dictionaryReferences, ); } + +// TODO: Use fewer queries with `IN` clauses to reduce the number of queries + +Future> searchManyKanjiWithDbConnection( + DatabaseExecutor connection, + Set kanji, +) async { + if (kanji.isEmpty) { + return {}; + } + + final results = {}; + + for (final k in kanji) { + final result = await searchKanjiWithDbConnection(connection, k); + if (result != null) { + results[k] = result; + } + } + + return results; +}