SocialDragon/socialdragon/webapp.go

89 lines
2.6 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"git.1750studios.com/AniNite/SocialDragon/database"
"github.com/gin-gonic/gin"
)
type statsT 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"})
}
// Admin
func renderAdminInbox(c *gin.Context) {
var ITs []database.Item
database.Db.Where("state = ?", database.Inbox).Order("created_at ASC").Find(&ITs)
c.HTML(200, "admin.html", gin.H{"its": ITs, "title": "SocialDragon Admin Inbox", "state": database.Inbox})
}
func renderAdminApproved(c *gin.Context) {
var ITs []database.Item
id := c.DefaultQuery("id", "0")
if id == "0" {
database.Db.Where("state = ?", database.Approved).Order("updated_at DESC").Limit(20).Find(&ITs)
c.HTML(200, "admin.html", gin.H{"its": ITs, "title": "SocialDragon Admin Approved", "state": database.Approved})
} else {
database.Db.Where("state = ? and id < ?", database.Approved, id).Order("updated_at DESC").Limit(20).Find(&ITs)
c.JSON(200, ITs)
}
}
func renderAdminRejected(c *gin.Context) {
var ITs []database.Item
id := c.DefaultQuery("id", "0")
if id == "0" {
database.Db.Where("state = ?", database.Rejected).Order("updated_at DESC").Limit(20).Find(&ITs)
c.HTML(200, "admin.html", gin.H{"its": ITs, "title": "SocialDragon Admin Rejected", "state": database.Rejected})
} else {
database.Db.Where("state = ? and id < ?", database.Rejected, id).Order("updated_at DESC").Limit(20).Find(&ITs)
c.JSON(200, ITs)
}
}
func approveSnap(c *gin.Context) {
var IT database.Item
database.Db.First(&IT, c.Param("id"))
IT.State = database.Approved
database.Db.Save(&IT)
c.JSON(200, IT)
}
func rejectSnap(c *gin.Context) {
var IT database.Item
database.Db.First(&IT, c.Param("id"))
IT.State = database.Rejected
database.Db.Save(&IT)
c.JSON(200, IT)
}
func stats(c *gin.Context) {
var ST statsT
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)
c.JSON(200, ST)
}
func listSnaps(c *gin.Context) {
var ITs []database.Item
database.Db.Where("state = ?", database.Approved).Order("updated_at DESC").Limit(5).Find(&ITs)
c.JSON(200, ITs)
}