48 lines
788 B
Go
48 lines
788 B
Go
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,
|
|
})
|
|
}
|