mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-11-05 03:42:08 +08:00
33 lines
626 B
Go
33 lines
626 B
Go
package dataver
|
|
|
|
type SyncResult[T any] struct {
|
|
Version uint
|
|
DeleteEID []string
|
|
Changes []T
|
|
Full bool
|
|
}
|
|
|
|
func NewSyncResult[T any](wl *WriteLog, find func(eIds []string) ([]T, error)) (*SyncResult[T], error) {
|
|
var findEIDs []string
|
|
var res SyncResult[T]
|
|
if wl.Full() {
|
|
res.Full = true
|
|
} else {
|
|
for _, l := range wl.Logs {
|
|
if l.Deleted {
|
|
res.DeleteEID = append(res.DeleteEID, l.EID)
|
|
} else {
|
|
findEIDs = append(findEIDs, l.EID)
|
|
}
|
|
}
|
|
}
|
|
if res.Full || len(findEIDs) > 0 {
|
|
var err error
|
|
res.Changes, err = find(findEIDs)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
return &res, nil
|
|
}
|