feat: implement migration to split MediaStreamInfos into AudioStreamDetails and VideoStreamDetails

This commit is contained in:
2026-04-30 17:48:49 -04:00
parent 57d6342524
commit 9fc10226c9
3 changed files with 253 additions and 16 deletions
@@ -62,24 +62,28 @@ namespace Emby.Server.Implementations.Library
var keys = item.GetUserDataKeys();
using var dbContext = _repository.CreateDbContext();
using var transaction = dbContext.Database.BeginTransaction();
foreach (var key in keys)
var executionStrategy = dbContext.Database.CreateExecutionStrategy();
executionStrategy.Execute(() =>
{
userData.Key = key;
var userDataEntry = Map(userData, user.Id, item.Id);
if (dbContext.UserData.Any(f => f.ItemId == userDataEntry.ItemId && f.UserId == userDataEntry.UserId && f.CustomDataKey == userDataEntry.CustomDataKey))
{
dbContext.UserData.Attach(userDataEntry).State = EntityState.Modified;
}
else
{
dbContext.UserData.Add(userDataEntry);
}
}
using var transaction = dbContext.Database.BeginTransaction();
dbContext.SaveChanges();
transaction.Commit();
foreach (var key in keys)
{
userData.Key = key;
var userDataEntry = Map(userData, user.Id, item.Id);
if (dbContext.UserData.Any(f => f.ItemId == userDataEntry.ItemId && f.UserId == userDataEntry.UserId && f.CustomDataKey == userDataEntry.CustomDataKey))
{
dbContext.UserData.Attach(userDataEntry).State = EntityState.Modified;
}
else
{
dbContext.UserData.Add(userDataEntry);
}
}
dbContext.SaveChanges();
transaction.Commit();
});
var userId = user.InternalId;
var cacheKey = GetCacheKey(userId, item.Id);