search: add jadbFilterWordIds
Build and test / build (push) Successful in 8m12s

This commit is contained in:
2026-06-08 10:35:46 +09:00
parent a46d61c335
commit 832a74f9c2
2 changed files with 23 additions and 1 deletions
+5 -1
View File
@@ -44,7 +44,11 @@ extension JaDBConnection on DatabaseExecutor {
pageSize: pageSize,
);
///
/// Filter a list of word IDs, and return the ones that are listed in the word dictionary.
Future<Set<int>> jadbFilterWordIds(Iterable<int> ids) =>
filterWordIdsWithDbConnection(this, ids);
/// Get a word by its ID. Returns null if no result is found for the given ID.
Future<WordSearchResult?> jadbGetWordById(int id) =>
getWordByIdWithDbConnection(this, id);
+18
View File
@@ -96,6 +96,24 @@ Future<int?> searchWordCountWithDbConnection(
return entryIdCount;
}
Future<Set<int>> filterWordIdsWithDbConnection(
DatabaseExecutor connection,
Iterable<int> ids,
) async {
if (ids.isEmpty) {
return {};
}
final Set<int> filteredIds = await connection
.rawQuery(
'SELECT "entryId" FROM "${JMdictTableNames.entry}" WHERE "entryId" IN (${ids.map((_) => '?').join(',')})',
ids.toList(),
)
.then((rows) => rows.map((row) => row['entryId'] as int).toSet());
return filteredIds;
}
/// Fetches a single word by its entry ID, returning null if not found.
Future<WordSearchResult?> getWordByIdWithDbConnection(
DatabaseExecutor connection,