feat(backend): implement GetStat function to retrieve file statistics and storage limits

This commit is contained in:
keven1024
2025-06-01 18:38:06 +08:00
parent bac513a9be
commit 8d47c65498

View File

@@ -0,0 +1,50 @@
package controllers
import (
"backend/internal/models"
"backend/internal/utils"
"strings"
"github.com/labstack/echo/v4"
"github.com/spf13/cast"
)
func GetStat(c echo.Context) error {
keys, err := models.GetRedisFileKeysAll()
if err != nil {
return utils.HTTPErrorHandler(c, err)
}
var filesSize int64
for _, key := range keys {
list := strings.Split(key, "_")
if len(list) > 1 {
filesSize += cast.ToInt64(list[1])
}
}
queueInspector := utils.GetQueueInspector()
queues, err := queueInspector.History("default", 30)
if err != nil {
return utils.HTTPErrorHandler(c, err)
}
maxStorageSize, err := utils.GetFileSize(utils.GetEnv("MAX_LOCALSTORAGE_SIZE"))
if err != nil {
return utils.HTTPErrorHandler(c, err)
}
return utils.HTTPSuccessHandler(c, map[string]any{
"version": "0.1.0",
"total": map[string]any{
"file_size": filesSize,
"file_num": len(keys),
},
"limit": map[string]any{
"file_size": maxStorageSize,
},
"admin": map[string]any{
"user_name": utils.GetEnv("ADMIN_NAME"),
"email": utils.GetEnv("ADMIN_EMAIL"),
},
"queue": queues,
})
}