Skip to content
Snippets Groups Projects
Verified Commit f4bf74ec authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Implement per-user statistics

parent c4dbd847
No related branches found
No related tags found
No related merge requests found
...@@ -48,6 +48,13 @@ type ChannelData struct { ...@@ -48,6 +48,13 @@ type ChannelData struct {
Name string Name string
TotalWords int TotalWords int
TotalCharacters int TotalCharacters int
Users []UserData
}
type UserData struct {
Name string
Total int
Words int
} }
func main() { func main() {
...@@ -73,6 +80,19 @@ func main() { ...@@ -73,6 +80,19 @@ func main() {
println(err.Error()) println(err.Error())
return 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) err = formatTemplate(w, "statistics", channelData)
if err != nil { if err != nil {
println(err.Error()) println(err.Error())
......
...@@ -21,3 +21,13 @@ ...@@ -21,3 +21,13 @@
<link href="/assets/css/style.css" rel="stylesheet"> <link href="/assets/css/style.css" rel="stylesheet">
<p>Total: {{.TotalCharacters}} Characters, {{.TotalWords}} Words</p> <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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment