public void SetUserInfoSync(List <MediaBrowser.Model.Dto.UserItemDataDto> dtos, List <LibItem> itemRefs, string userName, string userId, CancellationToken cancellationToken) { var newRecs = new List <UserInfoRec>(); var upRecs = new List <UserInfoRec>(); lock (_userLock) { dtos.ForEach(dto => { var sJson = json.SerializeToString(dto).ToString(); logger.LogDebug("Updating ItemId '{0}' for UserId: '{1}'", dto.ItemId, userId); LibItem itemref = itemRefs.Where(x => x.Id.ToString("N") == dto.ItemId).FirstOrDefault(); if (itemref != null) { var oldRec = userInfoRecs.Select(u => u.ItemId == dto.ItemId && u.UserId == userId).FirstOrDefault(); var newRec = new UserInfoRec() { ItemId = dto.ItemId, Json = sJson, UserId = userId, LastModified = (long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds), MediaType = itemref.ItemType, //LibraryName = itemref.CollectionName }; if (oldRec == null) { newRecs.Add(newRec); } else { newRec.Id = oldRec.Id; upRecs.Add(newRec); } } }); if (newRecs.Count > 0) { userInfoRecs.Insert(newRecs); } if (upRecs.Count > 0) { var data = userInfoRecs.Select(); foreach (var rec in upRecs) { data.Where(d => d.Id == rec.Id).ToList().ForEach(u => { u.ItemId = rec.ItemId; u.Json = rec.Json; u.UserId = rec.UserId; u.LastModified = rec.LastModified; u.MediaType = rec.MediaType; }); } userInfoRecs.Commit(data); } } }
public void SetUserInfoSync(List <MediaBrowser.Model.Dto.UserItemDataDto> dtos, List <LibItem> itemRefs, string userId) { var newRecs = new List <UserInfoRec>(); var upRecs = new List <UserInfoRec>(); var userInfoCollection = _liteDb.GetCollection <UserInfoRec>(UserInfoCollection); dtos.ForEach(dto => { _logger.LogDebug("Updating ItemId '{0}' for UserId: '{1}'", dto.ItemId, userId); Guid dtoItemId = Guid.Parse(dto.ItemId); LibItem itemref = itemRefs.FirstOrDefault(x => x.Id == dtoItemId); if (itemref != null) { var sJson = System.Text.Json.JsonSerializer.Serialize(dto, _jsonSerializerOptions); var oldRec = userInfoCollection.Find(u => u.ItemId == dto.ItemId && u.UserId == userId).FirstOrDefault(); var newRec = new UserInfoRec { ItemId = dto.ItemId, Json = sJson, UserId = userId, LastModified = DateTimeOffset.Now.ToUnixTimeSeconds(), MediaType = itemref.ItemType }; if (oldRec == null) { newRecs.Add(newRec); } else { newRec.Id = oldRec.Id; upRecs.Add(newRec); } } }); if (newRecs.Count > 0) { userInfoCollection.Insert(newRecs); } if (upRecs.Count > 0) { var data = userInfoCollection.FindAll().ToList(); foreach (var rec in upRecs) { data.Where(d => d.Id == rec.Id).ToList().ForEach(u => { u.ItemId = rec.ItemId; u.Json = rec.Json; u.UserId = rec.UserId; u.LastModified = rec.LastModified; u.MediaType = rec.MediaType; }); } userInfoCollection.Update(data); } }