MCPcopy Create free account
hub / github.com/driangle/taskmd / sortTasks

Function sortTasks

apps/cli/internal/cli/list.go:258–300  ·  view source on GitHub ↗

sortTasks sorts tasks by the specified field

(tasks []*model.Task, sortField string)

Source from the content-addressed store, hash-verified

256
257// sortTasks sorts tasks by the specified field
258func sortTasks(tasks []*model.Task, sortField string) error {
259 switch sortField {
260 case "id":
261 sort.Slice(tasks, func(i, j int) bool {
262 return tasks[i].ID < tasks[j].ID
263 })
264 case "title":
265 sort.Slice(tasks, func(i, j int) bool {
266 return tasks[i].Title < tasks[j].Title
267 })
268 case "status":
269 sort.Slice(tasks, func(i, j int) bool {
270 return tasks[i].Status < tasks[j].Status
271 })
272 case "priority":
273 priorityOrder := map[model.Priority]int{
274 model.PriorityCritical: 0,
275 model.PriorityHigh: 1,
276 model.PriorityMedium: 2,
277 model.PriorityLow: 3,
278 }
279 sort.Slice(tasks, func(i, j int) bool {
280 return priorityOrder[tasks[i].Priority] < priorityOrder[tasks[j].Priority]
281 })
282 case "effort":
283 effortOrder := map[model.Effort]int{
284 model.EffortSmall: 0,
285 model.EffortMedium: 1,
286 model.EffortLarge: 2,
287 }
288 sort.Slice(tasks, func(i, j int) bool {
289 return effortOrder[tasks[i].Effort] < effortOrder[tasks[j].Effort]
290 })
291 case "created", "created_at":
292 sort.Slice(tasks, func(i, j int) bool {
293 return tasks[i].Created.Before(tasks[j].Created.Time)
294 })
295 default:
296 return invalidValueError("sort field", sortField, validSortFields)
297 }
298
299 return nil
300}
301
302// outputJSON outputs tasks as JSON
303func outputJSON(tasks []*model.Task) error {

Callers 7

TestSortTasksFunction · 0.70
runSearchFunction · 0.70
TestSearch_InvalidSortFunction · 0.70
applyListFiltersAndSortFunction · 0.70

Calls 1

invalidValueErrorFunction · 0.85

Tested by 5

TestSortTasksFunction · 0.56
TestSearch_InvalidSortFunction · 0.56