lib/search/word: fix english sql query

This commit is contained in:
2025-05-22 16:57:05 +02:00
parent 8bff2c6799
commit 52a686ac29

View File

@@ -133,13 +133,22 @@ Future<List<ScoredEntryId>> fetchEntryIds(
break;
case SearchMode.English:
entryIds = (await connection.query(
JMdictTableNames.senseGlossary,
columns: ['entryId'],
where: 'english LIKE ?',
whereArgs: ['%$word%'],
limit: pageSize,
offset: offset,
entryIds = (await connection.rawQuery(
'''
SELECT DISTINCT
"${JMdictTableNames.sense}"."entryId"
FROM "${JMdictTableNames.senseGlossary}"
JOIN "${JMdictTableNames.sense}" USING ("senseId")
WHERE "${JMdictTableNames.senseGlossary}"."phrase" LIKE ?
LIMIT ?
OFFSET ?
'''
.trim(),
[
'%$word%',
pageSize,
offset,
],
))
.map((row) => ScoredEntryId(
row['entryId'] as int,
@@ -200,13 +209,19 @@ Future<int?> fetchEntryIdCount(
break;
case SearchMode.English:
entryIdCount = (await connection.query(
JMdictTableNames.senseGlossary,
columns: ['COUNT(DISTINCT entryId)'],
where: 'english LIKE ?',
whereArgs: ['%$word%'],
entryIdCount = (await connection.rawQuery(
'''
SELECT COUNT(DISTINCT "${JMdictTableNames.sense}"."entryId") AS "count"
FROM "${JMdictTableNames.senseGlossary}"
JOIN "${JMdictTableNames.sense}" USING ("senseId")
WHERE "${JMdictTableNames.senseGlossary}"."phrase" LIKE ?
'''
.trim(),
[
'%$word%',
],
))
.firstOrNull?['COUNT(DISTINCT entryId)'] as int?;
.firstOrNull?['count'] as int?;
break;
case SearchMode.MixedKana: