diff options
| author | JPVenson <github@jpb.email> | 2024-11-13 20:28:52 +0000 |
|---|---|---|
| committer | JPVenson <github@jpb.email> | 2024-11-13 20:28:52 +0000 |
| commit | e43e34eab89b1ef074641cee62b9640c2a2f7ff0 (patch) | |
| tree | db0f8399e47895cc8124215857374fb2c8123b37 /Jellyfin.Server.Implementations/Item/BaseItemRepository.cs | |
| parent | 2060d0ca2c1eab6c1087f3edfa56e7cb92331c22 (diff) | |
Fixed Scan saving library items
Diffstat (limited to 'Jellyfin.Server.Implementations/Item/BaseItemRepository.cs')
| -rw-r--r-- | Jellyfin.Server.Implementations/Item/BaseItemRepository.cs | 60 |
1 files changed, 29 insertions, 31 deletions
diff --git a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs index 099093433..b367cb9f7 100644 --- a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs +++ b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs @@ -1219,15 +1219,23 @@ public sealed class BaseItemRepository( /// <inheritdoc cref="IItemRepository" /> public void SaveImages(BaseItemDto item) { - ArgumentNullException.ThrowIfNull(item); + try + { + ArgumentNullException.ThrowIfNull(item); - var images = item.ImageInfos.Select(e => Map(item.Id, e)); - using var context = dbProvider.CreateDbContext(); - using var transaction = context.Database.BeginTransaction(); - context.BaseItemImageInfos.Where(e => e.ItemId == item.Id).ExecuteDelete(); - context.BaseItemImageInfos.AddRange(images); - context.SaveChanges(); - transaction.Commit(); + var images = item.ImageInfos.Select(e => Map(item.Id, e)); + using var context = dbProvider.CreateDbContext(); + using var transaction = context.Database.BeginTransaction(); + context.BaseItemImageInfos.Where(e => e.ItemId == item.Id).ExecuteDelete(); + context.BaseItemImageInfos.AddRange(images); + context.SaveChanges(); + transaction.Commit(); + } + catch (System.Exception ex) + { + System.Console.WriteLine(ex); + throw; + } } /// <inheritdoc cref="IItemRepository" /> @@ -1291,40 +1299,30 @@ public sealed class BaseItemRepository( var itemValuesToSave = GetItemValuesToSave(item.Item, item.InheritedTags); context.ItemValuesMap.Where(e => e.ItemId == entity.Id).ExecuteDelete(); - entity.ItemValues = new List<ItemValueMap>(); - 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 (!refValue.IsEmpty()) + if (refValue.IsEmpty()) { - entity.ItemValues.Add(new ItemValueMap() + context.ItemValues.Add(new ItemValue() { - Item = entity, - ItemId = entity.Id, - ItemValue = null!, - ItemValueId = refValue + CleanValue = GetCleanValue(itemValue.Value), + Type = (ItemValueType)itemValue.MagicNumber, + ItemValueId = refValue = Guid.NewGuid(), + Value = itemValue.Value }); } - else + + context.ItemValuesMap.Add(new ItemValueMap() { - entity.ItemValues.Add(new ItemValueMap() - { - Item = entity, - ItemId = entity.Id, - ItemValue = new ItemValue() - { - CleanValue = GetCleanValue(itemValue.Value), - Type = (ItemValueType)itemValue.MagicNumber, - ItemValueId = Guid.NewGuid(), - Value = itemValue.Value - }, - ItemValueId = Guid.Empty - }); - } + Item = null!, + ItemId = entity.Id, + ItemValue = null!, + ItemValueId = refValue + }); } } |
