feat: implement sync log and stats handlers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
61
internal/handler/log.go
Normal file
61
internal/handler/log.go
Normal 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,
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user