From 12de0f1b6ce00590ed7ddd4bf374675d3416caf3 Mon Sep 17 00:00:00 2001 From: Louison SARLIN--MAGNUS Date: Fri, 3 Apr 2026 15:23:58 +0200 Subject: [PATCH] feat: adding list_by command --- commands/list_tasks_by.go | 28 ++++++++++++++++++++++++++++ gotask-cli.go | 15 ++++++++++++++- models/task.go | 8 ++++---- 3 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 commands/list_tasks_by.go diff --git a/commands/list_tasks_by.go b/commands/list_tasks_by.go new file mode 100644 index 0000000..7efa7f2 --- /dev/null +++ b/commands/list_tasks_by.go @@ -0,0 +1,28 @@ +package commands + +import ( + "fmt" + "gotask-cli/models" + "gotask-cli/utils" +) + +func ListTasksBy(status string, backlog []models.Task) { + var backlogToDisplay []models.Task + var statusID models.Status + for i, v := range models.StatusName { + if v == status { + statusID = i + } + } + for _, v := range backlog { + if v.Status == models.Status(statusID) { + backlogToDisplay = append(backlogToDisplay, v) + } + } + if len(backlogToDisplay) > 0 { + utils.PrintTasksAsATable(backlogToDisplay) + } else { + fmt.Printf("No tasks with the status [%s]", status) + } + +} diff --git a/gotask-cli.go b/gotask-cli.go index 828d26e..abd0929 100644 --- a/gotask-cli.go +++ b/gotask-cli.go @@ -25,7 +25,20 @@ func main() { commands.Help() } case "list": - commands.ListTasks(backlog) + switch len(os.Args[1:]) { + case 1: + commands.ListTasks(backlog) + case 2: + switch os.Args[2] { + case "todo", "doing", "done": + commands.ListTasksBy(os.Args[2], backlog) + default: + fmt.Printf("Unknown status %s", os.Args[2]) + } + + default: + fmt.Println("Too many arguments !") + } case "progress": if len(os.Args[1:]) == 2 { id, err := strconv.ParseUint(os.Args[2], 10, 32) diff --git a/models/task.go b/models/task.go index 0e33e4a..4cb155f 100644 --- a/models/task.go +++ b/models/task.go @@ -1,14 +1,14 @@ package models -type status int +type Status int const ( - todo status = iota + todo Status = iota doing done ) -var StatusName = map[status]string{ +var StatusName = map[Status]string{ todo: "todo", doing: "doing", done: "done", @@ -17,7 +17,7 @@ var StatusName = map[status]string{ type Task struct { Id uint Description string - Status status + Status Status Created int64 Updated int64 }