102 lines
2.6 KiB
Go
102 lines
2.6 KiB
Go
package api
|
|
|
|
import (
|
|
"ai-gateway/internal/db"
|
|
"ai-gateway/internal/models"
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// GetProvidersHandler 处理 GET /api/providers 请求
|
|
func (h *APIHandler) GetProvidersHandler(c *gin.Context) {
|
|
providers, err := db.GetProviders(h.DB)
|
|
if err != nil {
|
|
c.JSON(http.StatusInternalServerError, gin.H{
|
|
"error": gin.H{
|
|
"message": "Failed to retrieve providers",
|
|
"type": "internal_error",
|
|
},
|
|
})
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, providers)
|
|
}
|
|
|
|
// GetProviderHandler 处理 GET /api/providers/:id 请求
|
|
func (h *APIHandler) GetProviderHandler(c *gin.Context) {
|
|
id := c.Param("id")
|
|
var providerID uint
|
|
if _, err := fmt.Sscanf(id, "%d", &providerID); err != nil {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid provider ID"})
|
|
return
|
|
}
|
|
|
|
provider, err := db.GetProviderByID(h.DB, providerID)
|
|
if err != nil {
|
|
c.JSON(http.StatusNotFound, gin.H{"error": "Provider not found"})
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, provider)
|
|
}
|
|
|
|
// CreateProviderHandler 处理 POST /api/providers 请求
|
|
func (h *APIHandler) CreateProviderHandler(c *gin.Context) {
|
|
var provider models.Provider
|
|
if err := c.ShouldBindJSON(&provider); err != nil {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
|
return
|
|
}
|
|
|
|
if err := db.CreateProvider(h.DB, &provider); err != nil {
|
|
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to create provider"})
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusCreated, provider)
|
|
}
|
|
|
|
// UpdateProviderHandler 处理 PUT /api/providers/:id 请求
|
|
func (h *APIHandler) UpdateProviderHandler(c *gin.Context) {
|
|
id := c.Param("id")
|
|
var providerID uint
|
|
if _, err := fmt.Sscanf(id, "%d", &providerID); err != nil {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid provider ID"})
|
|
return
|
|
}
|
|
|
|
var provider models.Provider
|
|
if err := c.ShouldBindJSON(&provider); err != nil {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
|
return
|
|
}
|
|
provider.ID = providerID
|
|
|
|
if err := db.UpdateProvider(h.DB, &provider); err != nil {
|
|
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to update provider"})
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, provider)
|
|
}
|
|
|
|
// DeleteProviderHandler 处理 DELETE /api/providers/:id 请求
|
|
func (h *APIHandler) DeleteProviderHandler(c *gin.Context) {
|
|
id := c.Param("id")
|
|
var providerID uint
|
|
if _, err := fmt.Sscanf(id, "%d", &providerID); err != nil {
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid provider ID"})
|
|
return
|
|
}
|
|
|
|
if err := db.DeleteProvider(h.DB, providerID); err != nil {
|
|
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to delete provider"})
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusNoContent, nil)
|
|
}
|