@@ -337,9 +337,13 @@ func (c *Conversation) searchLocalMessages(ctx context.Context, searchParam *sdk
337337 if err != nil {
338338 return nil , err
339339 }
340+
340341 // Search by content type or keyword based on provided parameters
341342 if len (searchParam .MessageTypeList ) != 0 && len (searchParam .KeywordList ) == 0 {
342- list , err = c .db .SearchMessageByContentType (ctx , searchParam .MessageTypeList , searchParam .ConversationID , startTime , endTime , offset , searchParam .Count )
343+ list , err = c .db .SearchMessageByContentType (ctx , searchParam .MessageTypeList , searchParam .SenderUserIDList , searchParam .ConversationID , startTime , endTime , offset , searchParam .Count )
344+ if err != nil {
345+ return nil , err
346+ }
343347 } else {
344348 newContentTypeList := func (list []int ) (result []int ) {
345349 for _ , v := range list {
@@ -349,18 +353,24 @@ func (c *Conversation) searchLocalMessages(ctx context.Context, searchParam *sdk
349353 }
350354 return result
351355 }(searchParam .MessageTypeList )
356+
352357 if len (newContentTypeList ) == 0 {
353358 newContentTypeList = SearchContentType
354359 }
355- list , err = c .db .SearchMessageByKeyword (ctx , newContentTypeList , searchParam .KeywordList , searchParam .KeywordListMatchType ,
356- searchParam .ConversationID , startTime , endTime , offset , searchParam .Count )
360+
361+ list , err = c .db .SearchMessageByKeyword (ctx , newContentTypeList , searchParam .SenderUserIDList , searchParam .KeywordList ,
362+ searchParam .KeywordListMatchType , searchParam .ConversationID , startTime , endTime , offset , searchParam .Count )
363+ if err != nil {
364+ return nil , err
365+ }
357366 }
358367 } else {
359368 // Comprehensive search across all conversations
360369 if len (searchParam .MessageTypeList ) == 0 {
361370 searchParam .MessageTypeList = SearchContentType
362371 }
363- list , err = c .searchMessageByContentTypeAndKeyword (ctx , searchParam .MessageTypeList , searchParam .KeywordList , searchParam .KeywordListMatchType , startTime , endTime )
372+
373+ list , err = c .searchMessageByContentTypeAndKeyword (ctx , searchParam .MessageTypeList , searchParam .SenderUserIDList , searchParam .KeywordList , searchParam .KeywordListMatchType , startTime , endTime )
364374 }
365375
366376 // Handle any errors encountered during the search
@@ -377,7 +387,7 @@ func (c *Conversation) searchLocalMessages(ctx context.Context, searchParam *sdk
377387 //log.Debug("hahh",utils.KMP("SSSsdf3434","F3434"))
378388 //log.Debug("hahh",utils.KMP("SSSsdf3434","SDF3"))
379389 // log.Debug("", "get raw data length is", len(list))
380- log .ZDebug (ctx , "get raw data length is" , len (list ))
390+ log .ZDebug (ctx , "get raw data length is" , "len" , len (list ))
381391
382392 for _ , v := range list {
383393 temp := sdk_struct.MsgStruct {}
@@ -465,21 +475,23 @@ func (c *Conversation) searchLocalMessages(ctx context.Context, searchParam *sdk
465475 return & r , nil // Return the final search results
466476}
467477
468- func (c * Conversation ) searchMessageByContentTypeAndKeyword (ctx context.Context , contentType []int , keywordList []string ,
478+ func (c * Conversation ) searchMessageByContentTypeAndKeyword (ctx context.Context , contentType []int , senderUserIDList [] string , keywordList []string ,
469479 keywordListMatchType int , startTime , endTime int64 ) (result []* model_struct.LocalChatLog , err error ) {
470480 var list []* model_struct.LocalChatLog
481+
471482 conversationIDList , err := c .db .GetAllConversationIDList (ctx )
472483 if err != nil {
473484 return nil , err
474485 }
475486
476487 var mu sync.Mutex
477- g , _ := errgroup .WithContext (ctx )
478- g .SetLimit (searchMessageGoroutineLimit )
479- for _ , v := range conversationIDList {
480- conversationID := v
481- g .Go (func () error {
482- sList , err := c .db .SearchMessageByContentTypeAndKeyword (ctx , contentType , conversationID , keywordList , keywordListMatchType , startTime , endTime )
488+ eg , _ := errgroup .WithContext (ctx )
489+ eg .SetLimit (searchMessageGoroutineLimit )
490+ for _ , cID := range conversationIDList {
491+ conversationID := cID
492+
493+ eg .Go (func () error {
494+ sList , err := c .db .SearchMessageByContentTypeAndKeyword (ctx , contentType , conversationID , senderUserIDList , keywordList , keywordListMatchType , startTime , endTime )
483495 if err != nil {
484496 log .ZWarn (ctx , "search conversation message" , err , "conversationID" , conversationID )
485497 return nil
@@ -488,11 +500,12 @@ func (c *Conversation) searchMessageByContentTypeAndKeyword(ctx context.Context,
488500 mu .Lock ()
489501 list = append (list , sList ... )
490502 mu .Unlock ()
503+
491504 return nil
492505 })
493506 }
494507
495- if err := g .Wait (); err != nil {
508+ if err := eg .Wait (); err != nil {
496509 return nil , err
497510 }
498511
0 commit comments