add new statistic page
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"backend/env"
|
||||
"backend/models"
|
||||
"backend/server"
|
||||
"backend/stats"
|
||||
"backend/utils"
|
||||
"flag"
|
||||
"fmt"
|
||||
@@ -119,6 +120,10 @@ func main() {
|
||||
}))
|
||||
|
||||
//set logger for AuthMiddleware
|
||||
s.Routes.Use(func(c *gin.Context) {
|
||||
c.Set("logger", logger)
|
||||
c.Next()
|
||||
})
|
||||
accessHandler.SetMiddlewareLogger(s.Routes)
|
||||
api := s.Routes.Group("/api")
|
||||
//set routes
|
||||
@@ -136,6 +141,7 @@ func main() {
|
||||
role.GET("/members", dbHandler.GetMember)
|
||||
auth.GET("/events", dbHandler.GetEvent)
|
||||
auth.GET("/groups", dbHandler.GetGroup)
|
||||
auth.POST("/stats", stats.GetStats)
|
||||
|
||||
auth.GET("/users", accessHandler.GetUser)
|
||||
auth.GET("/roles", accessHandler.GetRole)
|
||||
|
||||
54
backend/stats/stats.go
Normal file
54
backend/stats/stats.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package stats
|
||||
|
||||
import (
|
||||
"backend/utils"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"gitea.tecamino.com/paadi/tecamino-logger/logging"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type Stats struct {
|
||||
Database string `json:"database,omitempty"`
|
||||
DatabaseSize int64 `json:"databaseSize,omitempty"`
|
||||
}
|
||||
|
||||
func GetStats(c *gin.Context) {
|
||||
middlewareData, err := utils.GetMiddlewareData(c, "logger")
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"error": err.Error(),
|
||||
})
|
||||
}
|
||||
|
||||
logger, ok := middlewareData.(*logging.Logger)
|
||||
if !ok {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"error": "middleware logger for state not defined",
|
||||
})
|
||||
return
|
||||
}
|
||||
var stats Stats
|
||||
err = c.BindJSON(&stats)
|
||||
if err != nil {
|
||||
logger.Error("GetStats", err)
|
||||
c.JSON(http.StatusInternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
f, err := os.Stat(stats.Database)
|
||||
if err != nil {
|
||||
logger.Error("GetStats", err)
|
||||
c.JSON(http.StatusInternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
var returnStats = Stats{
|
||||
DatabaseSize: f.Size(),
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"data": returnStats,
|
||||
})
|
||||
}
|
||||
28
backend/utils/middleware.go
Normal file
28
backend/utils/middleware.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func SetMiddlewareData(r *gin.Engine, key string, data any) {
|
||||
//set logger for middleware
|
||||
r.Use(func(c *gin.Context) {
|
||||
c.Set(key, data)
|
||||
c.Next()
|
||||
})
|
||||
}
|
||||
|
||||
func GetMiddlewareData(c *gin.Context, key string) (any, error) {
|
||||
// Retrieve logger from Gin context
|
||||
data, ok := c.Get("logger")
|
||||
if !ok {
|
||||
log.Fatal("middleware logger not set — use SetMiddlewareLogger first")
|
||||
c.AbortWithStatusJSON(http.StatusInternalServerError, http.StatusInternalServerError)
|
||||
return nil, fmt.Errorf("middleware key '%s'not set ", key)
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
Reference in New Issue
Block a user