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