MCPcopy Create free account
hub / github.com/53AI/53AIHub / GetMessagesByUserAndAgent

Function GetMessagesByUserAndAgent

api/controller/message.go:270–314  ·  view source on GitHub ↗

@Summary Get messages by agent @Description Get messages between user and specific agent with pagination and keyword search. 返回的消息包含RAG检索统计数据(如果存在) @Tags Message @Accept json @Produce json @Security BearerAuth @Param agent_id path int true "Agent ID" @Param keyword query string false "Search keyword

(c *gin.Context)

Source from the content-addressed store, hash-verified

268// @Success 200 {object} model.CommonResponse{data=MessagesResponse} "Success"
269// @Router /api/agents/{agent_id}/messages [get]
270func GetMessagesByUserAndAgent(c *gin.Context) {
271 agent_id, err := strconv.ParseInt(c.Param("agent_id"), 10, 64)
272 if err != nil {
273 c.JSON(http.StatusBadRequest, model.ParamError.ToResponse(nil))
274 return
275 }
276
277 var messageListRequest MessageListRequest
278 if err := c.ShouldBindQuery(&messageListRequest); err != nil {
279 c.JSON(http.StatusBadRequest, model.ParamError.ToResponse(err))
280 return
281 }
282
283 userId := config.GetUserId(c)
284 eid := config.GetEID(c)
285 count, messages, err := model.GetMessagesByUserAndAgentWithVisitor(
286 eid, userId, agent_id,
287 messageListRequest.Keyword, messageListRequest.FileID, session.GetVisitorID(c), messageListRequest.Limit, messageListRequest.Offset)
288 if err != nil {
289 c.JSON(http.StatusInternalServerError, model.DBError.ToResponse(err))
290 return
291 }
292
293 // 批量获取文件名,避免 N+1 查询
294 fileMap := make(map[int64]string)
295 var targetFileIDs []int64
296 for _, msg := range messages {
297 if msg.FileID > 0 {
298 targetFileIDs = append(targetFileIDs, msg.FileID)
299 }
300 }
301 if len(targetFileIDs) > 0 {
302 var files []model.File
303 if err := model.DB.Select("id, path").Where("id IN ?", targetFileIDs).Find(&files).Error; err == nil {
304 for _, f := range files {
305 fileMap[f.ID] = model.ExtractSimpleFileName(f.Path)
306 }
307 }
308 }
309
310 c.JSON(http.StatusOK, model.Success.ToResponse(&MessagesResponse{
311 Count: count,
312 Messages: convertToEnhancedMessages(messages, fileMap),
313 }))
314}
315
316// @Summary Get messages by user and agent
317// @Description Get messages between user and specific agent with pagination and keyword search. 返回的消息包含RAG检索统计数据(如果存在)

Callers

nothing calls this directly

Calls 3

ToResponseMethod · 0.80
GetEIDMethod · 0.80

Tested by

no test coverage detected