diff options
| author | JPVenson <github@jpb.email> | 2024-11-14 20:36:27 +0000 |
|---|---|---|
| committer | JPVenson <github@jpb.email> | 2024-11-14 20:36:27 +0000 |
| commit | 30ba35aa0ce10916c6bd4cb6b33d573af52219ec (patch) | |
| tree | c53afef12faf7a47c4b0a18b974a12422ee78396 /Jellyfin.Server.Implementations/Item/BaseItemRepository.cs | |
| parent | b60cd378d983555430b181259604a465883d6bac (diff) | |
attempted to fix multi insert for Itemvalues
Diffstat (limited to 'Jellyfin.Server.Implementations/Item/BaseItemRepository.cs')
| -rw-r--r-- | Jellyfin.Server.Implementations/Item/BaseItemRepository.cs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs index dae35b1a0..9f41922b1 100644 --- a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs +++ b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs @@ -373,6 +373,8 @@ public sealed class BaseItemRepository( tuples[i] = (item, ancestorIds, topParent, userdataKey, inheritedTags); } + var localFuckingItemValueCache = new Dictionary<(int MagicNumber, string Value), Guid>(); + using var context = dbProvider.CreateDbContext(); using var transaction = context.Database.BeginTransaction(); foreach (var item in tuples) @@ -416,10 +418,14 @@ public sealed class BaseItemRepository( context.ItemValuesMap.Where(e => e.ItemId == entity.Id).ExecuteDelete(); foreach (var itemValue in itemValuesToSave) { - var refValue = context.ItemValues - .Where(f => f.CleanValue == GetCleanValue(itemValue.Value) && (int)f.Type == itemValue.MagicNumber) - .Select(e => e.ItemValueId) - .FirstOrDefault(); + if (!localFuckingItemValueCache.TryGetValue(itemValue, out var refValue)) + { + refValue = context.ItemValues + .Where(f => f.CleanValue == GetCleanValue(itemValue.Value) && (int)f.Type == itemValue.MagicNumber) + .Select(e => e.ItemValueId) + .FirstOrDefault(); + } + if (refValue.IsEmpty()) { context.ItemValues.Add(new ItemValue() @@ -429,6 +435,7 @@ public sealed class BaseItemRepository( ItemValueId = refValue = Guid.NewGuid(), Value = itemValue.Value }); + localFuckingItemValueCache[itemValue] = refValue; } context.ItemValuesMap.Add(new ItemValueMap() |
