listless

A simple list app for Apple platforms
Log | Files | Refs | README | LICENSE

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 {