137 lines
3.0 KiB
Go
137 lines
3.0 KiB
Go
package handlers
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"github.com/drama-generator/backend/application/services"
|
|
"github.com/drama-generator/backend/pkg/config"
|
|
"github.com/drama-generator/backend/pkg/logger"
|
|
"github.com/drama-generator/backend/pkg/response"
|
|
"github.com/gin-gonic/gin"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type AIConfigHandler struct {
|
|
aiService *services.AIService
|
|
log *logger.Logger
|
|
}
|
|
|
|
func NewAIConfigHandler(db *gorm.DB, cfg *config.Config, log *logger.Logger) *AIConfigHandler {
|
|
return &AIConfigHandler{
|
|
aiService: services.NewAIService(db, log),
|
|
log: log,
|
|
}
|
|
}
|
|
|
|
func (h *AIConfigHandler) CreateConfig(c *gin.Context) {
|
|
var req services.CreateAIConfigRequest
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
response.BadRequest(c, err.Error())
|
|
return
|
|
}
|
|
|
|
config, err := h.aiService.CreateConfig(&req)
|
|
if err != nil {
|
|
response.InternalError(c, "创建失败")
|
|
return
|
|
}
|
|
|
|
response.Created(c, config)
|
|
}
|
|
|
|
func (h *AIConfigHandler) GetConfig(c *gin.Context) {
|
|
|
|
configID, err := strconv.ParseUint(c.Param("id"), 10, 32)
|
|
if err != nil {
|
|
response.BadRequest(c, "无效的配置ID")
|
|
return
|
|
}
|
|
|
|
config, err := h.aiService.GetConfig(uint(configID))
|
|
if err != nil {
|
|
if err.Error() == "config not found" {
|
|
response.NotFound(c, "配置不存在")
|
|
return
|
|
}
|
|
response.InternalError(c, "获取失败")
|
|
return
|
|
}
|
|
|
|
response.Success(c, config)
|
|
}
|
|
|
|
func (h *AIConfigHandler) ListConfigs(c *gin.Context) {
|
|
|
|
serviceType := c.Query("service_type")
|
|
|
|
configs, err := h.aiService.ListConfigs(serviceType)
|
|
if err != nil {
|
|
response.InternalError(c, "获取列表失败")
|
|
return
|
|
}
|
|
|
|
response.Success(c, configs)
|
|
}
|
|
|
|
func (h *AIConfigHandler) UpdateConfig(c *gin.Context) {
|
|
|
|
configID, err := strconv.ParseUint(c.Param("id"), 10, 32)
|
|
if err != nil {
|
|
response.BadRequest(c, "无效的配置ID")
|
|
return
|
|
}
|
|
|
|
var req services.UpdateAIConfigRequest
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
response.BadRequest(c, err.Error())
|
|
return
|
|
}
|
|
|
|
config, err := h.aiService.UpdateConfig(uint(configID), &req)
|
|
if err != nil {
|
|
if err.Error() == "config not found" {
|
|
response.NotFound(c, "配置不存在")
|
|
return
|
|
}
|
|
response.InternalError(c, "更新失败")
|
|
return
|
|
}
|
|
|
|
response.Success(c, config)
|
|
}
|
|
|
|
func (h *AIConfigHandler) DeleteConfig(c *gin.Context) {
|
|
|
|
configID, err := strconv.ParseUint(c.Param("id"), 10, 32)
|
|
if err != nil {
|
|
response.BadRequest(c, "无效的配置ID")
|
|
return
|
|
}
|
|
|
|
if err := h.aiService.DeleteConfig(uint(configID)); err != nil {
|
|
if err.Error() == "config not found" {
|
|
response.NotFound(c, "配置不存在")
|
|
return
|
|
}
|
|
response.InternalError(c, "删除失败")
|
|
return
|
|
}
|
|
|
|
response.Success(c, gin.H{"message": "删除成功"})
|
|
}
|
|
|
|
func (h *AIConfigHandler) TestConnection(c *gin.Context) {
|
|
var req services.TestConnectionRequest
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
response.BadRequest(c, err.Error())
|
|
return
|
|
}
|
|
|
|
if err := h.aiService.TestConnection(&req); err != nil {
|
|
response.BadRequest(c, "连接测试失败: "+err.Error())
|
|
return
|
|
}
|
|
|
|
response.Success(c, gin.H{"message": "连接测试成功"})
|
|
}
|