package main import ( "go.etcd.io/bbolt" "html/template" "log" "net/http" "time" ) var indexPageTemplate = ` Add moments of your day

Logged in as: {{ .Me }} | Logout

Remember moments: N minutes since your last memo

{{ if .Moments }}
{{ range .Moments }} {{ end }}
{{ (.Time.Format "15:04") }} {{ if ne .Diff 0 }}{{ .Diff }}m{{ else }}start{{ end }} {{ .Memo }}
{{ end }} ` type indexHandler struct { DB *bbolt.DB } func (h *indexHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { sess, err := NewSession(w, r) if err != nil { log.Printf("Error loading session: %s", err) return } defer sess.Flush() if !sess.LoggedIn { http.Redirect(w, r, "/auth/", 302) return } moments, err := loadMoments(h.DB, time.Now().Format("2006-01-02")) if err != nil { log.Println(err) } type indexPageInfo struct { Moments []Moment LastMomentSeconds int64 Me string } indexPage := indexPageInfo{Moments: moments} indexPage.Me = sess.Me if len(moments) > 0 { a := moments for i := len(a)/2 - 1; i >= 0; i-- { opp := len(a) - 1 - i a[i], a[opp] = a[opp], a[i] } lastMoment := moments[0] indexPage.LastMomentSeconds = lastMoment.Time.Unix() } t, err := template.New("index").Parse(indexPageTemplate) if err != nil { log.Println(err) return } err = t.Execute(w, indexPage) if err != nil { log.Println(err) return } }