← All repositories

listless

A simple list app for Apple platforms

git clone https://code.inqk.net/listless.git


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

MListless/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 {