mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-11-04 11:22:10 +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
 | 
						|
}
 |