Adds stats endpoint to get Item/User counts

This commit is contained in:
Andreas Mieke 2017-01-20 16:00:56 +01:00
parent c77ba5c611
commit 4bf7475d61
2 changed files with 27 additions and 0 deletions

View file

@ -44,6 +44,7 @@ func setupGin() {
router.GET("/admin/approved", renderAdminApproved)
router.GET("/admin/rejected", renderAdminRejected)
router.GET("/admin/stats", stats)
router.POST("/admin/approve/:id", approveSnap)
router.POST("/admin/reject/:id", rejectSnap)

View file

@ -5,6 +5,20 @@ import (
"github.com/gin-gonic/gin"
)
type Stats struct {
Count struct {
Items struct {
Inbox uint
Approved uint
Rejected uint
}
Users struct {
Blocked uint
Unblocked uint
}
}
}
// Wall
func renderHomepage(c *gin.Context) {
c.HTML(200, "index.html", gin.H{"title": "SocialDragon"})
@ -44,3 +58,15 @@ func rejectSnap(c *gin.Context) {
database.Db.Save(&IT)
c.JSON(200, IT)
}
func stats(c *gin.Context) {
var ST Stats
database.Db.Begin()
database.Db.Model(database.Item{}).Where("state = ?", database.Inbox).Count(&ST.Count.Items.Inbox)
database.Db.Model(database.Item{}).Where("state = ?", database.Approved).Count(&ST.Count.Items.Approved)
database.Db.Model(database.Item{}).Where("state = ?", database.Rejected).Count(&ST.Count.Items.Rejected)
database.Db.Model(database.User{}).Where("blocked = ?", false).Count(&ST.Count.Users.Unblocked)
database.Db.Model(database.User{}).Where("blocked = ?", true).Count(&ST.Count.Users.Blocked)
database.Db.Commit()
c.JSON(200, ST)
}