feat: implement sync log and stats handlers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
panw
2026-03-31 16:24:28 +08:00
parent 86b21ccc31
commit 56deffc6a4

61
internal/handler/log.go Normal file
View File

@@ -0,0 +1,61 @@
package handler
import (
"net/http"
"strconv"
"github.com/gin-gonic/gin"
"gitm/internal/database"
)
func HandleGetSyncLogs(c *gin.Context) {
serverIDStr := c.Query("server_id")
pageStr := c.DefaultQuery("page", "1")
limitStr := c.DefaultQuery("limit", "50")
page, _ := strconv.Atoi(pageStr)
limit, _ := strconv.Atoi(limitStr)
if limit > 100 {
limit = 100
}
var serverID int64
if serverIDStr != "" {
serverID, _ = strconv.ParseInt(serverIDStr, 10, 64)
}
offset := (page - 1) * limit
logs, err := database.GetSyncLogs(serverID, limit, offset)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"data": logs, "page": page, "limit": limit, "count": len(logs)})
}
func HandleGetStats(c *gin.Context) {
servers, err := database.GetServers()
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
serverCount := len(servers)
repoCount := 0
totalSize := int64(0)
activeServers := 0
for _, server := range servers {
if server.Status == "active" {
activeServers++
}
repos, err := database.GetReposByServer(server.ID)
if err == nil {
repoCount += len(repos)
for _, repo := range repos {
totalSize += repo.Size
}
}
}
c.JSON(http.StatusOK, gin.H{
"server_count": serverCount,
"active_servers": activeServers,
"repo_count": repoCount,
"total_size": totalSize,
})
}