feat(conversations): align search finder payload

This commit is contained in:
2026-06-07 03:32:51 +08:00
parent f001560c81
commit 9f1ff28521
4 changed files with 141 additions and 20 deletions
@@ -9,7 +9,6 @@ import (
"github.com/gin-gonic/gin"
"github.com/gochat/gochat/internal/model"
"github.com/gochat/gochat/internal/search"
"github.com/gochat/gochat/internal/service"
"github.com/gochat/gochat/pkg/pagination"
"github.com/gochat/gochat/pkg/response"
@@ -465,22 +464,21 @@ func (h *ConversationHandler) Search(c *gin.Context) {
return
}
q := c.Query("q")
if q == "" {
response.AbortWithStatusError(c, http.StatusBadRequest, response.ErrBadRequest, "search query 'q' is required")
p := pagination.Parse(c)
var params service.FilterParams
if err := c.ShouldBindQuery(&params); err != nil {
response.AbortWithStatusError(c, http.StatusBadRequest, response.ErrValidation, err.Error())
return
}
p := pagination.Parse(c)
searchMode := search.ParseSearchMode(c.DefaultQuery("search_mode", ""))
conversations, total, svcErr := h.conversationSvc.Search(c.Request.Context(), accountID, q, p.Offset, p.PerPage, searchMode)
result, svcErr := h.conversationSvc.ListWithFinder(c.Request.Context(), accountID, getUserID(c), params, p.Offset, p.PerPage)
if svcErr != nil {
handleServiceError(c, svcErr)
return
}
c.JSON(http.StatusOK, serializeConversationList(c.Request.Context(), h.conversationSvc.DB(), conversations, total))
c.JSON(http.StatusOK, serializeConversationSearchList(c.Request.Context(), h.conversationSvc.DB(), result.Conversations, result.Count))
}
// Filter retrieves conversations matching advanced filter criteria.