2024-05-27 18:24:33 +08:00

43 lines
829 B
Go

package dataver
import (
"github.com/openimsdk/tools/utils/datautil"
"go.mongodb.org/mongo-driver/bson/primitive"
)
type SyncResult struct {
Version uint
VersionID string
DeleteEID []string
Changes []string
Full bool
}
func VersionIDStr(id primitive.ObjectID) string {
if id.IsZero() {
return ""
}
return id.String()
}
func NewSyncResult(wl *WriteLog, fullIDs []string, versionID string) *SyncResult {
var findEIDs []string
var res SyncResult
if wl.Full() || VersionIDStr(wl.ID) != versionID {
res.Changes = fullIDs
res.Full = true
} else {
idSet := datautil.SliceSet(fullIDs)
for _, l := range wl.Logs {
if l.Deleted {
res.DeleteEID = append(res.DeleteEID, l.EID)
} else {
if _, ok := idSet[l.EID]; ok {
findEIDs = append(findEIDs, l.EID)
}
}
}
}
return &res
}