package handlers import ( "backend/models" "log" "net/http" "github.com/gin-gonic/gin" ) func (h *NodeHandler) HandleRegisterService(c *gin.Context) { var serviceRegister models.ServiceRegister if err := c.ShouldBindJSON(&serviceRegister); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } serviceID, err := h.Repo.RegisterService(serviceRegister.Service, serviceRegister.NodeId) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{"id": serviceID}) } func (h *NodeHandler) HandleUpdateServiceStatus(c *gin.Context) { var serviceUpdate models.ServiceUpdateRequest if err := c.ShouldBindJSON(&serviceUpdate); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } err := h.Repo.UpdateServiceStatus(serviceUpdate) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{"status": "updated"}) } func (h *NodeHandler) HandleDeleteService(c *gin.Context) { var serviceDelete models.ServiceMinimal if err := c.ShouldBindJSON(&serviceDelete); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } node, err := h.Repo.RetriveNode(serviceDelete.NodeId) if err != nil { log.Printf("Node not found %v error : %v", serviceDelete.NodeId, err) c.JSON(http.StatusNotFound, gin.H{"error": "Node not found"}) return } err = h.Repo.DeleteService(node, serviceDelete.ServiceId) if err != nil { log.Printf("Error deleting service: %v", err) c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to delete service"}) return } c.Status(http.StatusNoContent) } func (h *NodeHandler) HandleAddService(c *gin.Context) { var addService models.AddServiceRequest if err := c.ShouldBindJSON(&addService); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } node, err := h.Repo.RetriveNode(addService.NodeId) if err != nil { log.Printf("Node not found %v error : %v", addService.NodeId, err) c.JSON(http.StatusNotFound, gin.H{"error": "Node not found"}) return } var service models.Service service.Command = addService.Command service.Name = addService.Name service.Id = 0 log.Printf("Node api key: %v", addService.NodeApiKey) err = h.Repo.AddServiceToNode(&service, &node, addService.NodeApiKey) if err != nil { log.Printf("Error add service: %v", err) c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to add service"}) return } c.Status(http.StatusNoContent) }