Minor recursive query reformatting

pull/3279/head
Alex Baker 11 months ago
parent ac9bb17f83
commit f6805f325c

@ -17,20 +17,11 @@ import org.tasks.preferences.QueryPreferences
internal object TaskListQueryRecursive {
private val RECURSIVE = Table("recursive_tasks")
private val RECURSIVE_TASK = field("$RECURSIVE.task")
private val FIELDS =
TaskListQuery.FIELDS.plus(listOf(
field("group_concat(distinct(tag_uid))").`as`("tags"),
field("indent"),
field("sort_group"),
field("children"),
field("primary_sort"),
field("secondary_sort"),
field("parent_complete"),
)).toTypedArray()
private val SUBTASK_QUERY =
QueryTemplate()
.join(Join.inner(RECURSIVE, Task.PARENT.eq(RECURSIVE_TASK)))
.where(activeAndVisible())
.join(Join.inner(RECURSIVE, Task.PARENT.eq(RECURSIVE_TASK)))
.where(activeAndVisible())
.toString()
// TODO: switch to datastore, reading from preferences is expensive (30+ ms)
fun getRecursiveQuery(
@ -117,7 +108,13 @@ internal object TaskListQueryRecursive {
recursive_tasks.sort_group AS sort_group
FROM tasks
$SUBTASK_QUERY
ORDER BY parent_complete, indent DESC, subtask_complete, completion_sort ${if (preferences.completedAscending) "" else "DESC"}, ${SortHelper.orderForGroupTypeRecursive(groupMode, groupAscending)}, ${SortHelper.orderForSortTypeRecursive(sortMode, sortAscending, subtaskMode, subtaskAscending)}
ORDER BY
parent_complete,
indent DESC,
subtask_complete,
completion_sort ${if (preferences.completedAscending) "" else "DESC"},
${SortHelper.orderForGroupTypeRecursive(groupMode, groupAscending)},
${SortHelper.orderForSortTypeRecursive(sortMode, sortAscending, subtaskMode, subtaskAscending)}
),
numbered_tasks AS (
SELECT task, ROW_NUMBER() OVER () AS sequence
@ -135,13 +132,22 @@ internal object TaskListQueryRecursive {
WHERE parent > 0
)
SELECT
${FIELDS.joinToString(", ") { it.toStringInSelect() }}
${TaskListQuery.FIELDS.joinToString(",\n") { it.toStringInSelect() }},
group_concat(distinct(tag_uid)) AS tags,
indent,
sort_group,
children,
primary_sort,
secondary_sort,
parent_complete
FROM tasks
INNER JOIN numbered_tasks ON tasks._id = numbered_tasks.task
INNER JOIN max_indent ON tasks._id = max_indent.task
INNER JOIN recursive_tasks ON recursive_tasks.task = tasks._id
LEFT JOIN child_counts ON child_counts.parent = tasks._id
${PermaSql.replacePlaceholdersForQuery("${TaskListQuery.JOINS} WHERE recursive_tasks.hidden = 0")}
${TaskListQuery.JOINS}
WHERE
recursive_tasks.hidden = 0
AND recursive_tasks.indent = max_indent
GROUP BY tasks._id
ORDER BY sequence

Loading…
Cancel
Save