From 17fb0f724ce559f8ace0ffe831577424fdb05156 Mon Sep 17 00:00:00 2001 From: tarsin Date: Sat, 27 May 2023 19:56:38 +0800 Subject: [PATCH] Fix SearchDatabase query --- app/src/main/java/com/hippo/ehviewer/dao/SearchDao.kt | 11 +++++++---- .../com/hippo/ehviewer/ui/scene/SearchBarScene.kt | 3 +-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/dao/SearchDao.kt b/app/src/main/java/com/hippo/ehviewer/dao/SearchDao.kt index 9bdf2d7fd..ebd124739 100644 --- a/app/src/main/java/com/hippo/ehviewer/dao/SearchDao.kt +++ b/app/src/main/java/com/hippo/ehviewer/dao/SearchDao.kt @@ -6,11 +6,14 @@ import androidx.room.Query @Dao interface SearchDao { - @Query("DELETE FROM suggestions WHERE query = :query") + @Query("DELETE FROM suggestions WHERE `query` = :query") fun deleteQuery(query: String) - @Query("SELECT * FROM suggestions") - fun rawSuggestions(): Array + @Query("SELECT * FROM suggestions WHERE `query` LIKE :prefix || '%' ORDER BY date DESC LIMIT :limit") + fun rawSuggestions(prefix: String, limit: Int): Array + + @Query("SELECT * FROM suggestions ORDER BY date DESC LIMIT :limit") + fun list(limit: Int): Array @Insert fun insert(search: Search) @@ -21,5 +24,5 @@ interface SearchDao { insert(search) } - fun suggestions(prefix: String, limit: Int) = rawSuggestions().map { it.query }.toTypedArray() + fun suggestions(prefix: String, limit: Int) = (if (prefix.isBlank()) list(limit) else rawSuggestions(prefix, limit)).map { it.query } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchBarScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchBarScene.kt index 0353f3aac..26c2d60e7 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchBarScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchBarScene.kt @@ -318,8 +318,7 @@ abstract class SearchBarScene : BaseScene(), ToolBarScene { EhTagDatabase.takeIf { it.isInitialized() }?.run { if (text.isNotEmpty() && !text.endsWith(' ')) { val keyword = text.substringAfterLast(' ') - val translate = - Settings.showTagTranslations && isTranslatable(requireContext()) + val translate = Settings.showTagTranslations && isTranslatable(requireContext()) suggestFlow(keyword, translate, true).collect { emit(TagSuggestion(it.first, it.second)) }