From f4bf74ecd02d899217679e6a86662464c16742a6 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Thu, 24 May 2018 13:53:31 +0200 Subject: [PATCH] Implement per-user statistics --- main.go | 20 ++++++++++++++++++++ templates/statistics.html | 12 +++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index a6aea1b..24210fa 100644 --- a/main.go +++ b/main.go @@ -48,6 +48,13 @@ type ChannelData struct { Name string TotalWords int TotalCharacters int + Users []UserData +} + +type UserData struct { + Name string + Total int + Words int } func main() { @@ -73,6 +80,19 @@ func main() { println(err.Error()) return } + result, err := db.Query("SELECT coalesce(users.nick, '[Unknown]'), t.characters, t.words FROM (SELECT coalesce(groups.\"group\", messages.sender) AS hash, SUM(messages.characters) as characters, SUM(messages.words) as words FROM messages LEFT JOIN groups ON messages.sender = groups.nick AND groups.channel = 1 WHERE messages.channel = 1 GROUP BY hash ORDER BY characters DESC) t LEFT JOIN users ON t.hash = users.hash LIMIT 20") + if err != nil { + println(err.Error()) + return + } + for result.Next() { + var info UserData + err := result.Scan(&info.Name, &info.Total, &info.Words) + if err != nil { + panic(err) + } + channelData.Users = append(channelData.Users, info) + } err = formatTemplate(w, "statistics", channelData) if err != nil { println(err.Error()) diff --git a/templates/statistics.html b/templates/statistics.html index 205870d..530fb11 100644 --- a/templates/statistics.html +++ b/templates/statistics.html @@ -20,4 +20,14 @@ <meta name="apple-mobile-web-app-status-bar-style" content="#FFC107"> <link href="/assets/css/style.css" rel="stylesheet"> -<p>Total: {{.TotalCharacters}} Characters, {{.TotalWords}} Words</p> \ No newline at end of file +<p>Total: {{.TotalCharacters}} Characters, {{.TotalWords}} Words</p> + +<table> +{{range .Users}} + <tr> + <td>{{.Name}}</td> + <td>{{.Total}}</td> + <td>{{.Words}}</td> + </tr> +{{end}} +</table> \ No newline at end of file -- GitLab