geekai/api/handler/markmap_handler.go
2024-04-15 06:16:53 +08:00

49 lines
1.1 KiB
Go

package handler
import (
"chatplus/core"
"chatplus/core/types"
"chatplus/store/model"
"chatplus/store/vo"
"chatplus/utils"
"chatplus/utils/resp"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
// MarkMapHandler 生成思维导图
type MarkMapHandler struct {
BaseHandler
}
func NewMarkMapHandler(app *core.AppServer, db *gorm.DB) *MarkMapHandler {
return &MarkMapHandler{BaseHandler: BaseHandler{App: app, DB: db}}
}
// GetModel get the chat model for generating Markdown text
func (h *MarkMapHandler) GetModel(c *gin.Context) {
modelId := h.App.SysConfig.XMindModelId
session := h.DB.Session(&gorm.Session{}).Where("enabled", true)
if modelId > 0 {
session = session.Where("id", modelId)
} else {
session = session.Where("platform", types.OpenAI)
}
var chatModel model.ChatModel
res := session.First(&chatModel)
if res.Error != nil {
resp.ERROR(c, "No available AI model")
return
}
var modelVo vo.ChatModel
err := utils.CopyObject(chatModel, &modelVo)
if err != nil {
resp.ERROR(c, "error with copy object: "+err.Error())
return
}
resp.SUCCESS(c, modelVo)
}