commit ff1a48e8a2c35103fec750e688e57bab4acd5e30
parent c9228cad41e191d8d4e247c1d62a5e71279f8b6b
Author: Michael Camilleri <[email protected]>
Date: Thu, 19 Feb 2026 05:31:37 +0900
Push ordering of tasks to SQL layer
Co-Authored-By: Codex GPT 5.3 <[email protected]>
Diffstat
| M | Listless/Models/TaskStore.swift | | | 26 | ++++++++++++++------------ |
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/Listless/Models/TaskStore.swift b/Listless/Models/TaskStore.swift
@@ -27,19 +27,21 @@ final class TaskStore {
}
func fetchTasks() throws -> [TaskItem] {
- let request = TaskItem.fetchRequest()
- request.sortDescriptors = []
-
do {
- let allTasks = try context.fetch(request)
-
- // Active tasks sorted by sortOrder
- let activeTasks = allTasks.filter { !$0.isCompleted }
- .sorted { $0.sortOrder < $1.sortOrder }
-
- // Completed tasks sorted by updatedAt (most recently completed first)
- let completedTasks = allTasks.filter { $0.isCompleted }
- .sorted { $0.updatedAt > $1.updatedAt }
+ let activeRequest = TaskItem.fetchRequest()
+ activeRequest.predicate = NSPredicate(format: "isCompleted == NO")
+ activeRequest.sortDescriptors = [
+ NSSortDescriptor(keyPath: \TaskItem.sortOrder, ascending: true)
+ ]
+
+ let completedRequest = TaskItem.fetchRequest()
+ completedRequest.predicate = NSPredicate(format: "isCompleted == YES")
+ completedRequest.sortDescriptors = [
+ NSSortDescriptor(keyPath: \TaskItem.updatedAt, ascending: false)
+ ]
+
+ let activeTasks = try context.fetch(activeRequest)
+ let completedTasks = try context.fetch(completedRequest)
return activeTasks + completedTasks
} catch {