mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-05-24 02:02:29 -04:00
Fixed Scan saving library items
This commit is contained in:
parent
2060d0ca2c
commit
e43e34eab8
@ -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
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -61,7 +61,7 @@ public class PeopleRepository(IDbContextFactory<JellyfinDbContext> dbProvider, I
|
||||
using var transaction = context.Database.BeginTransaction();
|
||||
|
||||
context.PeopleBaseItemMap.Where(e => e.ItemId == itemId).ExecuteDelete();
|
||||
foreach (var item in people)
|
||||
foreach (var item in people.DistinctBy(e => e.Id)) // yes for __SOME__ reason there can be duplicates.
|
||||
{
|
||||
var personEntity = Map(item);
|
||||
var existingEntity = context.Peoples.FirstOrDefault(e => e.Id == personEntity.Id);
|
||||
@ -70,10 +70,6 @@ public class PeopleRepository(IDbContextFactory<JellyfinDbContext> dbProvider, I
|
||||
context.Peoples.Add(personEntity);
|
||||
existingEntity = personEntity;
|
||||
}
|
||||
else
|
||||
{
|
||||
context.Peoples.Attach(personEntity).State = EntityState.Modified;
|
||||
}
|
||||
|
||||
context.PeopleBaseItemMap.Add(new PeopleBaseItemMap()
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user