aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs
diff options
context:
space:
mode:
authorJPVenson <github@jpb.email>2024-11-13 14:25:26 +0000
committerJPVenson <github@jpb.email>2024-11-13 14:25:26 +0000
commit7b81a39ee17cd6e5b68f63fad132b29e516fceb1 (patch)
tree36b44e4bff4e8436e88fcf6c03173beb215ba752 /Jellyfin.Server.Implementations/Item/BaseItemRepository.cs
parentfcb1dfc010b67be4e0262e87d641b74a72351489 (diff)
Fix Deduplication and Save of Items
Diffstat (limited to 'Jellyfin.Server.Implementations/Item/BaseItemRepository.cs')
-rw-r--r--Jellyfin.Server.Implementations/Item/BaseItemRepository.cs12
1 files changed, 7 insertions, 5 deletions
diff --git a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs
index a9dd5d2fd..83a1a3a53 100644
--- a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs
+++ b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs
@@ -1270,6 +1270,7 @@ public sealed class BaseItemRepository(
}
else
{
+ context.BaseItemProviders.Where(e => e.ItemId == entity.Id).ExecuteDelete();
context.BaseItems.Attach(entity).State = EntityState.Modified;
}
@@ -1289,22 +1290,23 @@ public sealed class BaseItemRepository(
}
var itemValuesToSave = GetItemValuesToSave(item.Item, item.InheritedTags);
- var itemValues = itemValuesToSave.Select(e => e.Value).ToArray();
context.ItemValuesMap.Where(e => e.ItemId == entity.Id).ExecuteDelete();
entity.ItemValues = new List<ItemValueMap>();
- var referenceValues = context.ItemValues.Where(e => itemValues.Any(f => f == e.CleanValue)).ToArray();
foreach (var itemValue in itemValuesToSave)
{
- var refValue = referenceValues.FirstOrDefault(f => f.CleanValue == itemValue.Value && (int)f.Type == itemValue.MagicNumber);
- if (refValue is not null)
+ var refValue = context.ItemValues
+ .Where(f => f.CleanValue == GetCleanValue(itemValue.Value) && (int)f.Type == itemValue.MagicNumber)
+ .Select(e => e.ItemValueId)
+ .FirstOrDefault();
+ if (!refValue.IsEmpty())
{
entity.ItemValues.Add(new ItemValueMap()
{
Item = entity,
ItemId = entity.Id,
ItemValue = null!,
- ItemValueId = refValue.ItemValueId
+ ItemValueId = refValue
});
}
else