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, }) }