From eb5b932b4c98eeadffbc6ff6c916ee6f87ce50f1 Mon Sep 17 00:00:00 2001 From: Ken Hibino Date: Sun, 29 May 2022 10:16:40 -0700 Subject: [PATCH] (cli): Add formatNextProcessTime helper --- tools/asynq/cmd/dash/draw.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/asynq/cmd/dash/draw.go b/tools/asynq/cmd/dash/draw.go index 09606e3..3ebf1e9 100644 --- a/tools/asynq/cmd/dash/draw.go +++ b/tools/asynq/cmd/dash/draw.go @@ -217,6 +217,14 @@ func formatErrorRate(processed, failed int) string { return fmt.Sprintf("%.2f", float64(failed)/float64(processed)) } +func formatNextProcessTime(t time.Time) string { + now := time.Now() + if t.Before(now) { + return "now" + } + return fmt.Sprintf("in %v", (t.Sub(now).Round(time.Second))) +} + func drawQueueTable(d *ScreenDrawer, style tcell.Style, state *State) { drawTable(d, style, queueColumnConfigs, state.queues, state.queueTableRowIdx-1) } @@ -300,7 +308,7 @@ var scheduledTaskTableColumns = []*columnConfig[*asynq.TaskInfo]{ {"ID", alignLeft, func(t *asynq.TaskInfo) string { return t.ID }}, {"Type", alignLeft, func(t *asynq.TaskInfo) string { return t.Type }}, {"Next Process Time", alignLeft, func(t *asynq.TaskInfo) string { - return fmt.Sprintf("in %v", (t.NextProcessAt.Sub(time.Now()).Round(time.Second))) + return formatNextProcessTime(t.NextProcessAt) }}, {"Payload", alignLeft, func(t *asynq.TaskInfo) string { return formatByteSlice(t.Payload) }}, } @@ -315,7 +323,7 @@ var retryTaskTableColumns = []*columnConfig[*asynq.TaskInfo]{ return t.LastFailedAt.Format("2006-01-02 15:04:05 MST") }}, {"Next Process Time", alignLeft, func(t *asynq.TaskInfo) string { - return fmt.Sprintf("in %v", (t.NextProcessAt.Sub(time.Now()).Round(time.Second))) + return formatNextProcessTime(t.NextProcessAt) }}, {"Payload", alignLeft, func(t *asynq.TaskInfo) string { return formatByteSlice(t.Payload) }}, }