package main import ( "context" _ "embed" "io" "text/template" "time" ) //go:embed report.tmpl var reportTMPL string func ReportSince(ctx context.Context, w io.Writer, s Storage, t time.Time) error { tmpl, err := template.New("report").Parse(reportTMPL) if err != nil { return err } messages, err := s.MessagesSince(ctx, t) if err != nil { return err } threads, err := s.ThreadsSince(ctx, t) if err != nil { return err } eventNames, err := s.EventNamesSince(ctx, t) if err != nil { return err } events, err := s.EventsSince(ctx, t) if err != nil { return err } return tmpl.Execute(w, map[string]any{ "since": t.Format("2006-01-02"), "messages": messages, "threads": threads, "events": events, "eventNames": eventNames, }) }