diff --git a/internal/handler/log.go b/internal/handler/log.go new file mode 100644 index 0000000..84b9084 --- /dev/null +++ b/internal/handler/log.go @@ -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, + }) +}