ready to dev

main
bel 2024-04-13 10:46:37 -06:00
parent 258a51af0b
commit a5f332b991
3 changed files with 88 additions and 0 deletions

47
report.go Normal file
View File

@ -0,0 +1,47 @@
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,
})
}

12
report.tmpl Normal file
View File

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<header>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/water.css@2/out/water.css">
</header>
<body>
<h1>Since {{ .since }}</h1>
</body>
<footer>
</footer>
</html>

29
report_test.go Normal file
View File

@ -0,0 +1,29 @@
package main
import (
"bytes"
"context"
"os"
"path"
"testing"
"time"
)
func TestReport(t *testing.T) {
ctx, can := context.WithTimeout(context.Background(), time.Minute)
defer can()
w := bytes.NewBuffer(nil)
db := NewRAM()
FillWithTestdata(ctx, db, renderAssetPattern, renderDatacenterPattern)
s := NewStorage(db)
if err := ReportSince(ctx, w, s, time.Now().Add(-1*time.Hour*24*365*20)); err != nil {
t.Fatal(err)
}
p := path.Join(os.TempDir(), "test_report.html")
os.WriteFile(p, w.Bytes(), os.ModePerm)
t.Log(p)
}