Files
AIRouter/backend/api/virtual_model_handlers.go

97 lines
2.7 KiB
Go

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