Separate timings for building query

pull/3302/head
Alex Baker 10 months ago
parent 9016a7b628
commit bd550f68eb

@ -223,7 +223,7 @@ class CaldavManualSortTaskAdapterTest : InjectingTestCase() {
}
private fun move(from: Int, to: Int, indent: Int = 0) = runBlocking {
tasks.addAll(taskDao.fetchTasks { getQuery(preferences, filter) })
tasks.addAll(taskDao.fetchTasks(getQuery(preferences, filter)))
val adjustedTo = if (from < to) to + 1 else to // match DragAndDropRecyclerAdapter behavior
adapter.moved(from, adjustedTo, indent)
}

@ -426,7 +426,7 @@ class GoogleTaskManualSortAdapterTest : InjectingTestCase() {
}
private fun move(from: Int, to: Int, indent: Int = 0) = runBlocking {
tasks.addAll(taskDao.fetchTasks { getQuery(preferences, filter) })
tasks.addAll(taskDao.fetchTasks(getQuery(preferences, filter)))
val adjustedTo = if (from < to) to + 1 else to
adapter.moved(from, adjustedTo, indent)
}

@ -84,6 +84,6 @@ class OfflineSubtaskTest : InjectingTestCase() {
}
private fun query() = runBlocking {
tasks.addAll(taskDao.fetchTasks { getQuery(preferences, filter) })
tasks.addAll(taskDao.fetchTasks(getQuery(preferences, filter)))
}
}

@ -75,9 +75,9 @@ class RecursiveLoopTest : InjectingTestCase() {
assertEquals(grandchild, tasks[2].id)
}
private suspend fun getTasks() = taskDao.fetchTasks {
private suspend fun getTasks() = taskDao.fetchTasks(
getQuery(preferences, TodayFilter.create())
}
)
private suspend fun addTask(vararg properties: PropertyValue<in Task?, *>): Long {
val task = newTask(*properties)

@ -105,7 +105,7 @@ class ManualGoogleTaskQueryTest : InjectingTestCase() {
googleTaskDao.insert(newCaldavTask(with(CALENDAR, filter.uuid), with(TASK, id)))
}
private suspend fun query(): List<TaskContainer> = taskDao.fetchTasks {
private suspend fun query(): List<TaskContainer> = taskDao.fetchTasks(
TaskListQuery.getQuery(preferences, filter)
}
)
}

@ -144,8 +144,8 @@ class TaskDao @Inject constructor(
internal suspend fun insert(task: Task): Long = taskDao.insert(task)
internal suspend fun fetchTasks(callback: suspend () -> List<String>): List<TaskContainer> =
taskDao.fetchTasks(callback)
internal suspend fun fetchTasks(queries: List<String>): List<TaskContainer> =
taskDao.fetchTasks(queries)
internal suspend fun getAll(): List<Task> = taskDao.getAll()

@ -12,9 +12,7 @@ import org.tasks.time.DateTimeUtils2.currentTimeMillis
import timber.log.Timber
suspend fun TaskDao.fetchTasks(preferences: QueryPreferences, filter: Filter): List<TaskContainer> =
fetchTasks {
TaskListQuery.getQuery(preferences, filter)
}
fetchTasks(TaskListQuery.getQuery(preferences, filter))
internal suspend fun TaskDao.setCollapsed(preferences: QueryPreferences, filter: Filter, collapsed: Boolean) {
fetchTasks(preferences, filter)

@ -144,7 +144,7 @@ class TaskListViewModel @Inject constructor(
it.searchQuery.isBlank() -> MyTasksFilter.create()
else -> applicationContext.createSearchQuery(it.searchQuery)
}
taskDao.fetchTasks { getQuery(preferences, filter) }
taskDao.fetchTasks(getQuery(preferences, filter))
}
.onEach { tasks ->
_state.update {

@ -70,7 +70,7 @@ internal class TasksWidgetViewFactory(
runBlocking {
val collapsed = widgetPreferences.collapsed
tasks = SectionedDataSource(
taskDao.fetchTasks { getQuery(filter) },
taskDao.fetchTasks(getQuery(filter)),
disableGroups,
settings.groupMode,
widgetPreferences.subtaskMode,

@ -110,10 +110,9 @@ FROM (
+ "WHERE completed > 0 AND calendarUri IS NOT NULL AND calendarUri != ''")
abstract suspend fun clearCompletedCalendarEvents(): Int
open suspend fun fetchTasks(callback: suspend () -> List<String>): List<TaskContainer> =
open suspend fun fetchTasks(queries: List<String>): List<TaskContainer> =
database.withTransaction {
val start = if (IS_DEBUG) DateTimeUtils2.currentTimeMillis() else 0
val queries = callback()
val last = queries.size - 1
for (i in 0 until last) {
execSQL(queries[i])

@ -1,5 +1,6 @@
package org.tasks.data
import co.touchlab.kermit.Logger
import org.tasks.data.TaskListQueryNonRecursive.getNonRecursiveQuery
import org.tasks.data.TaskListQueryRecursive.getRecursiveQuery
import org.tasks.data.entity.CaldavAccount
@ -14,6 +15,7 @@ import org.tasks.data.sql.Join
import org.tasks.filters.AstridOrderingFilter
import org.tasks.filters.Filter
import org.tasks.preferences.QueryPreferences
import org.tasks.time.DateTimeUtils2.currentTimeMillis
object TaskListQuery {
private const val CALDAV_METADATA_JOIN = "for_caldav"
@ -41,13 +43,19 @@ object TaskListQuery {
fun getQuery(
preferences: QueryPreferences,
filter: Filter,
): MutableList<String> = when {
): MutableList<String> {
val start = currentTimeMillis()
return when {
filter.supportsManualSort() && preferences.isManualSort ->
getRecursiveQuery(filter, preferences)
filter is AstridOrderingFilter && preferences.isAstridSort ->
getNonRecursiveQuery(filter, preferences)
filter.supportsSorting() ->
getRecursiveQuery(filter, preferences)
else -> getNonRecursiveQuery(filter, preferences)
}.also { Logger.v { "Building query took ${currentTimeMillis() - start}ms" } }
}
}
Loading…
Cancel
Save