package api import ( "ai-gateway/internal/db" "ai-gateway/internal/models" "fmt" "net/http" "github.com/gin-gonic/gin" ) // CreateVirtualModelHandler 处理 POST /api/virtual-models 请求 func (h *APIHandler) CreateVirtualModelHandler(c *gin.Context) { var vm models.VirtualModel if err := c.ShouldBindJSON(&vm); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } if err := db.CreateVirtualModel(h.DB, &vm); err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to create virtual model"}) return } c.JSON(http.StatusCreated, vm) } // GetVirtualModelsHandler 处理 GET /api/virtual-models 请求 func (h *APIHandler) GetVirtualModelsHandler(c *gin.Context) { virtualModels, err := db.GetVirtualModels(h.DB) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to retrieve virtual models"}) return } c.JSON(http.StatusOK, virtualModels) } // GetVirtualModelHandler 处理 GET /api/virtual-models/:id 请求 func (h *APIHandler) GetVirtualModelHandler(c *gin.Context) { id := c.Param("id") var virtualModelID uint if _, err := fmt.Sscanf(id, "%d", &virtualModelID); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid virtual model ID"}) return } virtualModel, err := db.GetVirtualModelByID(h.DB, virtualModelID) if err != nil { c.JSON(http.StatusNotFound, gin.H{"error": "Virtual model not found"}) return } c.JSON(http.StatusOK, virtualModel) } // UpdateVirtualModelHandler 处理 PUT /api/virtual-models/:id 请求 func (h *APIHandler) UpdateVirtualModelHandler(c *gin.Context) { id := c.Param("id") var virtualModelID uint if _, err := fmt.Sscanf(id, "%d", &virtualModelID); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid virtual model ID"}) return } var vm models.VirtualModel if err := c.ShouldBindJSON(&vm); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } vm.ID = virtualModelID if err := db.UpdateVirtualModel(h.DB, &vm); err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to update virtual model"}) return } c.JSON(http.StatusOK, vm) } // DeleteVirtualModelHandler 处理 DELETE /api/virtual-models/:id 请求 func (h *APIHandler) DeleteVirtualModelHandler(c *gin.Context) { id := c.Param("id") var virtualModelID uint if _, err := fmt.Sscanf(id, "%d", &virtualModelID); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid virtual model ID"}) return } if err := db.DeleteVirtualModel(h.DB, virtualModelID); err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to delete virtual model"}) return } c.JSON(http.StatusNoContent, nil) }