From e8d52274e7073c0caa616729f4ef7993cd09b646 Mon Sep 17 00:00:00 2001 From: bel Date: Sat, 13 Apr 2024 23:16:20 -0600 Subject: [PATCH] again verbose --- report.go | 60 +++++++++++++++++++++++++++++++++-------------------- report.tmpl | 9 +------- 2 files changed, 39 insertions(+), 30 deletions(-) diff --git a/report.go b/report.go index 3242a39..9363b24 100644 --- a/report.go +++ b/report.go @@ -58,17 +58,33 @@ func ReportSince(ctx context.Context, w io.Writer, s Storage, t time.Time) error return err } - events, err := s.EventsSince(ctx, t) + eventIDs, err := s.EventsSince(ctx, t) if err != nil { return err } + type aThread struct { + Thread string + Messages []Message + First Message + Last Message + } + type anEvent struct { + Event string + Threads []aThread + First Message + Last Message + } + type someEvents struct { + Events []anEvent + } + return tmpl.Execute(w, map[string]any{ "since": t.Format("2006-01-02"), - "events": func() any { - threads := make([]any, len(events)) - for i, event := range events { - threads[i] = func() any { + "events": func() someEvents { + events := make([]anEvent, len(eventIDs)) + for i, event := range eventIDs { + events[i] = func() anEvent { threadNames := []string{} for _, m := range messages { if m.Event == event { @@ -77,9 +93,9 @@ func ReportSince(ctx context.Context, w io.Writer, s Storage, t time.Time) error } slices.Sort(threadNames) slices.Compact(threadNames) - threads := make([]any, len(threadNames)) + threads := make([]aThread, len(threadNames)) for i, thread := range threadNames { - threads[i] = func() any { + threads[i] = func() aThread { messages := []Message{} for _, m := range messages { if m.Thread == thread { @@ -89,16 +105,16 @@ func ReportSince(ctx context.Context, w io.Writer, s Storage, t time.Time) error sort.Slice(messages, func(i, j int) bool { return messages[i].TS < messages[j].TS }) - return map[string]any{ - "thread": thread, - "messages": messages, - "first": func() any { + return aThread{ + Thread: thread, + Messages: messages, + First: func() Message { if len(messages) == 0 { return Message{} } return messages[0] }(), - "last": func() any { + Last: func() Message { if len(messages) == 0 { return Message{} } @@ -108,28 +124,28 @@ func ReportSince(ctx context.Context, w io.Writer, s Storage, t time.Time) error }() } sort.Slice(threads, func(i, j int) bool { - return threads[i].(map[string]any)["first"].(Message).TS < threads[j].(map[string]any)["first"].(Message).TS + return threads[i].First.TS < threads[j].First.TS }) - return map[string]any{ - "event": event, - "threads": threads, - "first": func() any { + return anEvent{ + Event: event, + Threads: threads, + First: func() Message { if len(threads) == 0 { return Message{} } - return threads[0].(map[string]any)["first"] + return threads[0].First }(), - "last": func() any { + Last: func() Message { if len(threads) == 0 { return Message{} } - return threads[len(threads)-1].(map[string]any)["last"] + return threads[len(threads)-1].Last }(), } }() } - return map[string]any{ - "threads": threads, + return someEvents{ + Events: events, } }(), "messages": messages, diff --git a/report.tmpl b/report.tmpl index 86eda3c..1c72549 100644 --- a/report.tmpl +++ b/report.tmpl @@ -60,15 +60,8 @@ Source {{ range .events }} - {{ $first_ts := 0 }} - {{ $event := "" }} - {{ $event_name := "" }} - {{ $last_plaintext := "" }} - {{ $source := "" }} - {{ range . }} - {{ end }} - {{ time "Unix" $first_ts | time "Time.Format" "Mon Jan 02" }} + {{ time "Unix" .threads.first.TS | time "Time.Format" "Mon Jan 02" }} {{ end }}