diff --git a/index.go b/index.go new file mode 100644 index 0000000..823d92a --- /dev/null +++ b/index.go @@ -0,0 +1,64 @@ +package main + +import ( + "go.etcd.io/bbolt" + "html/template" + "log" + "net/http" + "time" +) + +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 + } +} + diff --git a/main.go b/main.go index 237bab6..495bf2e 100644 --- a/main.go +++ b/main.go @@ -4,7 +4,6 @@ import ( "bytes" "encoding/json" "fmt" - "html/template" "log" "math" "net/http" @@ -122,60 +121,6 @@ type Moment struct { Memo string } -type indexHandler struct { - DB *bolt.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 - } -} - // main is the main function func main() { fmt.Println("Starting tracking backend server")