diff --git a/socialdragon/main.go b/socialdragon/main.go index 750c592..c1620fa 100644 --- a/socialdragon/main.go +++ b/socialdragon/main.go @@ -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) diff --git a/socialdragon/webapp.go b/socialdragon/webapp.go index 6afddaf..85f2e48 100644 --- a/socialdragon/webapp.go +++ b/socialdragon/webapp.go @@ -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) +}