Add search-only visibility level to items

This commit is contained in:
MM20
2024-06-17 22:59:12 +02:00
parent 1251924553
commit c7ea840fc5
28 changed files with 571 additions and 485 deletions
@@ -34,16 +34,19 @@ interface SearchableDao {
"SELECT * FROM Searchable " +
"WHERE (" +
"(:manuallySorted AND pinPosition > 1) OR " +
"(:automaticallySorted AND pinPosition = 1) OR" +
"(:frequentlyUsed AND pinPosition = 0 AND launchCount > 0 AND hidden = 0) OR " +
"(:hidden AND hidden = 1)" +
") AND hidden = :hidden ORDER BY pinPosition DESC, weight DESC, launchCount DESC LIMIT :limit"
"(:automaticallySorted AND pinPosition = 1) OR " +
"(:frequentlyUsed AND pinPosition = 0 AND launchCount > 0) OR " +
"(:unused AND pinPosition = 0 AND launchCount = 0)" +
") AND (hidden <= :minVisibility AND hidden >= :maxVisibility) " +
"ORDER BY pinPosition DESC, weight DESC, launchCount DESC LIMIT :limit"
)
fun get(
manuallySorted: Boolean = false,
automaticallySorted: Boolean = false,
frequentlyUsed: Boolean = false,
hidden: Boolean = false,
unused: Boolean = false,
minVisibility: Int = 2,
maxVisibility: Int = 0,
limit: Int,
): Flow<List<SavedSearchableEntity>>
@@ -52,17 +55,20 @@ interface SearchableDao {
"WHERE (`type` IN (:includeTypes)) AND " +
"(" +
"(:manuallySorted AND pinPosition > 1) OR " +
"(:automaticallySorted AND pinPosition = 1) OR" +
"(:frequentlyUsed AND pinPosition = 0 AND launchCount > 0 AND hidden = 0) OR " +
"(:hidden AND hidden = 1)" +
") ORDER BY pinPosition DESC, weight DESC, launchCount DESC LIMIT :limit"
"(:automaticallySorted AND pinPosition = 1) OR " +
"(:frequentlyUsed AND pinPosition = 0 AND launchCount > 0) OR" +
"(:unused AND pinPosition = 0 AND launchCount = 0)" +
") AND (hidden <= :minVisibility AND hidden >= :maxVisibility) " +
"ORDER BY pinPosition DESC, weight DESC, launchCount DESC LIMIT :limit"
)
fun getIncludeTypes(
includeTypes: List<String>?,
manuallySorted: Boolean = false,
automaticallySorted: Boolean = false,
frequentlyUsed: Boolean = false,
hidden: Boolean = false,
unused: Boolean = false,
minVisibility: Int = 2,
maxVisibility: Int = 0,
limit: Int,
): Flow<List<SavedSearchableEntity>>
@@ -71,17 +77,20 @@ interface SearchableDao {
"WHERE (`type` NOT IN (:excludeTypes)) AND " +
"(" +
"(:manuallySorted AND pinPosition > 1) OR " +
"(:automaticallySorted AND pinPosition = 1) OR" +
"(:frequentlyUsed AND pinPosition = 0 AND launchCount > 0 AND hidden = 0) OR " +
"(:hidden AND hidden = 1)" +
") ORDER BY pinPosition DESC, weight DESC, launchCount DESC LIMIT :limit"
"(:automaticallySorted AND pinPosition = 1) OR " +
"(:frequentlyUsed AND pinPosition = 0 AND launchCount > 0) OR " +
"(:unused AND pinPosition = 0 AND launchCount = 0)" +
") AND (hidden <= :minVisibility AND hidden >= :maxVisibility) " +
"ORDER BY pinPosition DESC, weight DESC, launchCount DESC LIMIT :limit"
)
fun getExcludeTypes(
excludeTypes: List<String>?,
manuallySorted: Boolean = false,
automaticallySorted: Boolean = false,
frequentlyUsed: Boolean = false,
hidden: Boolean = false,
unused: Boolean = false,
minVisibility: Int = 2,
maxVisibility: Int = 0,
limit: Int,
): Flow<List<SavedSearchableEntity>>
@@ -89,16 +98,19 @@ interface SearchableDao {
"SELECT `key` FROM Searchable " +
"WHERE (" +
"(:manuallySorted AND pinPosition > 1) OR " +
"(:automaticallySorted AND pinPosition = 1) OR" +
"(:automaticallySorted AND pinPosition = 1) OR " +
"(:frequentlyUsed AND pinPosition = 0 AND launchCount > 0) OR " +
"(:hidden AND hidden = 1)" +
") AND hidden = :hidden ORDER BY pinPosition DESC, weight DESC, launchCount DESC LIMIT :limit"
"(:unused AND pinPosition = 0 AND launchCount = 0)" +
") AND (hidden <= :minVisibility AND hidden >= :maxVisibility) " +
"ORDER BY pinPosition DESC, weight DESC, launchCount DESC LIMIT :limit"
)
fun getKeys(
manuallySorted: Boolean = false,
automaticallySorted: Boolean = false,
frequentlyUsed: Boolean = false,
hidden: Boolean = false,
unused: Boolean = false,
minVisibility: Int = 2,
maxVisibility: Int = 0,
limit: Int,
): Flow<List<String>>
@@ -109,15 +121,18 @@ interface SearchableDao {
"(:manuallySorted AND pinPosition > 1) OR " +
"(:automaticallySorted AND pinPosition = 1) OR" +
"(:frequentlyUsed AND pinPosition = 0 AND launchCount > 0) OR " +
"(:hidden AND hidden = 1)" +
") AND hidden = :hidden ORDER BY pinPosition DESC, weight DESC, launchCount DESC LIMIT :limit"
"(:unused AND pinPosition = 0 AND launchCount = 0)" +
") AND (hidden <= :minVisibility AND hidden >= :maxVisibility) " +
"ORDER BY pinPosition DESC, weight DESC, launchCount DESC LIMIT :limit"
)
fun getKeysIncludeTypes(
includeTypes: List<String>?,
manuallySorted: Boolean = false,
automaticallySorted: Boolean = false,
frequentlyUsed: Boolean = false,
hidden: Boolean = false,
unused: Boolean = false,
minVisibility: Int = 2,
maxVisibility: Int = 0,
limit: Int,
): Flow<List<String>>
@@ -126,17 +141,20 @@ interface SearchableDao {
"WHERE (`type` NOT IN (:excludeTypes)) AND " +
"(" +
"(:manuallySorted AND pinPosition > 1) OR " +
"(:automaticallySorted AND pinPosition = 1) OR" +
"(:automaticallySorted AND pinPosition = 1) OR " +
"(:frequentlyUsed AND pinPosition = 0 AND launchCount > 0) OR " +
"(:hidden AND hidden = 1)" +
") AND hidden = :hidden ORDER BY pinPosition DESC, weight DESC, launchCount DESC LIMIT :limit"
"(:unused AND pinPosition = 0 AND launchCount = 0)" +
") AND (hidden <= :minVisibility AND hidden >= :maxVisibility) " +
"ORDER BY pinPosition DESC, weight DESC, launchCount DESC LIMIT :limit"
)
fun getKeysExcludeTypes(
excludeTypes: List<String>?,
manuallySorted: Boolean = false,
automaticallySorted: Boolean = false,
frequentlyUsed: Boolean = false,
hidden: Boolean = false,
unused: Boolean = false,
minVisibility: Int = 2,
maxVisibility: Int = 0,
limit: Int,
): Flow<List<String>>
@@ -184,7 +202,7 @@ interface SearchableDao {
fun sortByWeight(keys: List<String>): Flow<List<String>>
@Query("SELECT hidden FROM Searchable WHERE `key` = :key UNION SELECT 0 as hidden ORDER BY hidden DESC LIMIT 1")
fun isHidden(key: String): Flow<Boolean>
fun getVisibility(key: String): Flow<Int>
@Query("SELECT pinPosition FROM Searchable WHERE `key` = :key UNION SELECT 0 as pinPosition ORDER BY pinPosition DESC LIMIT 1")
fun isPinned(key: String): Flow<Boolean>
@@ -11,7 +11,7 @@ data class SavedSearchableEntity(
@ColumnInfo(name = "searchable") val serializedSearchable: String,
@ColumnInfo(defaultValue = "0") val launchCount: Int,
@ColumnInfo(defaultValue = "0") val pinPosition: Int,
@ColumnInfo(defaultValue = "0") val hidden: Boolean,
@ColumnInfo(name="hidden", defaultValue = "0") val visibility: Int,
@ColumnInfo(defaultValue = "0.0") val weight: Double
)