mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-10-28 22:58:10 +08:00
update get docIDs logic.
This commit is contained in:
parent
9b46304988
commit
bc47a6a8b6
@ -918,11 +918,20 @@ func (db *commonMsgDatabase) ConvertMsgsDocLen(ctx context.Context, conversation
|
|||||||
func (db *commonMsgDatabase) GetBeforeMsg(ctx context.Context, ts int64, docIDs []string, limit int) ([]*model.MsgDocModel, error) {
|
func (db *commonMsgDatabase) GetBeforeMsg(ctx context.Context, ts int64, docIDs []string, limit int) ([]*model.MsgDocModel, error) {
|
||||||
var msgs []*model.MsgDocModel
|
var msgs []*model.MsgDocModel
|
||||||
for i := 0; i < len(docIDs); i += 1000 {
|
for i := 0; i < len(docIDs); i += 1000 {
|
||||||
res, err := db.msgDocDatabase.GetBeforeMsg(ctx, ts, docIDs[i:i+1000], limit)
|
end := i + 1000
|
||||||
|
if end > len(docIDs) {
|
||||||
|
end = len(docIDs)
|
||||||
|
}
|
||||||
|
|
||||||
|
res, err := db.msgDocDatabase.GetBeforeMsg(ctx, ts, docIDs[i:end], limit)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
msgs = append(msgs, res...)
|
msgs = append(msgs, res...)
|
||||||
|
|
||||||
|
if len(msgs) >= limit {
|
||||||
|
return msgs[:limit], nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return msgs, nil
|
return msgs, nil
|
||||||
}
|
}
|
||||||
@ -968,14 +977,5 @@ func (db *commonMsgDatabase) setMinSeq(ctx context.Context, conversationID strin
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (db *commonMsgDatabase) GetDocIDs(ctx context.Context) ([]string, error) {
|
func (db *commonMsgDatabase) GetDocIDs(ctx context.Context) ([]string, error) {
|
||||||
var docIDsList []string
|
return db.msgDocDatabase.GetDocIDs(ctx)
|
||||||
|
|
||||||
docIDs, err := db.msgDocDatabase.GetDocIDs(ctx)
|
|
||||||
if err != nil {
|
|
||||||
return nil, errs.Wrap(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
docIDsList = append(docIDsList, docIDs...)
|
|
||||||
|
|
||||||
return docIDsList, nil
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1238,10 +1238,10 @@ func (m *MsgMgo) GetDocIDs(ctx context.Context) ([]string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if count < int64(limit) {
|
if count < int64(limit) {
|
||||||
skip = int(count)
|
skip = 0
|
||||||
} else {
|
} else {
|
||||||
rand.Seed(uint64(time.Now().UnixMilli()))
|
rand.Seed(uint64(time.Now().UnixMilli()))
|
||||||
skip = rand.Intn(int(count - int64(limit)))
|
skip = rand.Intn(int(count))
|
||||||
}
|
}
|
||||||
|
|
||||||
res, err := mongoutil.Aggregate[*model.MsgDocModel](ctx, m.coll, []bson.M{
|
res, err := mongoutil.Aggregate[*model.MsgDocModel](ctx, m.coll, []bson.M{
|
||||||
@ -1251,7 +1251,10 @@ func (m *MsgMgo) GetDocIDs(ctx context.Context) ([]string, error) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$limit": skip,
|
"$skip": skip,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$limit": limit,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user