diff options
-rw-r--r-- | entry.go | 5 | ||||
-rw-r--r-- | index.html.in | 6 | ||||
-rw-r--r-- | main.go | 29 |
3 files changed, 36 insertions, 4 deletions
@@ -75,3 +75,8 @@ func ListEntries(from, count uint) (entries []Entry, err error) { err = db.Select(&entries, "SELECT * FROM entries LIMIT ? OFFSET ?;", count, from) return } + +func EntriesSince(since time.Time) (entries []Entry, err error) { + err = db.Select(&entries, "SELECT * FROM entries WHERE started_at > ?;", since) + return +} diff --git a/index.html.in b/index.html.in index ee76fdb..3d813ad 100644 --- a/index.html.in +++ b/index.html.in @@ -3,4 +3,8 @@ <meta charset="utf-8"> <title>rudone</title> <h1>rudone — <span style="color: green">OK</span></h1> -<p>{{.}} entries +<table> +{{range .Stats}} +<tr><th>{{.Title}}<td>{{.Amount}} visits +{{end}} +</table> @@ -8,6 +8,7 @@ import ( "net/http" "os" "strconv" + "time" "github.com/gorilla/mux" ) @@ -74,15 +75,37 @@ func handleEntryGet(w http.ResponseWriter, r *http.Request) { } } +type Stat struct { + Title string + Amount uint +} + +type Home struct { + Stats []Stat +} + func handleHome(pathname string) func(http.ResponseWriter, *http.Request) { t := template.Must(template.ParseFS(content, pathname)) return func(w http.ResponseWriter, r *http.Request) { - count, err := CountEntries() - if err != nil { + var home Home + now := time.Now().UTC() + last_day, err := EntriesSince(now.AddDate(0, 0, -1)) + if err == nil { + home.Stats = append(home.Stats, Stat{"Last 24 hours", uint(len(last_day))}) + } + last_month, err := EntriesSince(now.AddDate(0, 0, -30)) + if err == nil { + home.Stats = append(home.Stats, Stat{"Last 30 days", uint(len(last_month))}) + } + total, err := CountEntries() + if err == nil { + home.Stats = append(home.Stats, Stat{"Total", total}) + } + if len(home.Stats) < 1 { http.Error(w, err.Error(), http.StatusInternalServerError) return } - t.Execute(w, count) + t.Execute(w, home) } } |