Files
YouduWiki/backend/handler/share/coversation.go
2026-05-21 19:52:45 +08:00

64 lines
1.7 KiB
Go

package share
import (
"github.com/labstack/echo/v4"
"github.com/chaitin/panda-wiki/handler"
"github.com/chaitin/panda-wiki/log"
"github.com/chaitin/panda-wiki/usecase"
)
type ShareConversationHandler struct {
*handler.BaseHandler
logger *log.Logger
usecase *usecase.ConversationUsecase
}
func NewShareConversationHandler(
baseHandler *handler.BaseHandler,
echo *echo.Echo,
usecase *usecase.ConversationUsecase,
logger *log.Logger,
) *ShareConversationHandler {
h := &ShareConversationHandler{
BaseHandler: baseHandler,
logger: logger.WithModule("handler.share.conversation"),
usecase: usecase,
}
group := echo.Group("share/v1/conversation",
h.ShareAuthMiddleware.Authorize,
)
group.GET("/detail", h.GetConversationDetail)
return h
}
// GetConversationDetail
//
// @Summary GetConversationDetail
// @Description GetConversationDetail
// @Tags share_conversation
// @Accept json
// @Produce json
// @Param X-KB-ID header string true "kb id"
// @Param id query string true "conversation id"
// @Success 200 {object} domain.PWResponse{data=domain.ShareConversationDetailResp}
// @Router /share/v1/conversation/detail [get]
func (h *ShareConversationHandler) GetConversationDetail(c echo.Context) error {
kbID := c.Request().Header.Get("X-KB-ID")
if kbID == "" {
return h.NewResponseWithError(c, "kb_id is required", nil)
}
id := c.QueryParam("id")
if id == "" {
return h.NewResponseWithError(c, "id is required", nil)
}
node, err := h.usecase.GetShareConversationDetail(c.Request().Context(), kbID, id)
if err != nil {
return h.NewResponseWithError(c, "failed to get node detail", err)
}
return h.NewResponseWithData(c, node)
}