mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-31 14:33:54 -04:00
improve userdata migration (#14488)
This commit is contained in:
parent
7bd08ab290
commit
c62a07405e
@ -8,6 +8,7 @@ using System.Threading;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Emby.Server.Implementations.Data;
|
using Emby.Server.Implementations.Data;
|
||||||
using Jellyfin.Database.Implementations;
|
using Jellyfin.Database.Implementations;
|
||||||
|
using Jellyfin.Database.Implementations.Entities;
|
||||||
using Jellyfin.Server.Implementations.Item;
|
using Jellyfin.Server.Implementations.Item;
|
||||||
using Jellyfin.Server.ServerSetupApp;
|
using Jellyfin.Server.ServerSetupApp;
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
@ -78,6 +79,8 @@ internal class MigrateLibraryUserData : IAsyncMigrationRoutine
|
|||||||
|
|
||||||
WHERE NOT EXISTS(SELECT 1 FROM TypedBaseItems WHERE TypedBaseItems.UserDataKey = UserDatas.key)
|
WHERE NOT EXISTS(SELECT 1 FROM TypedBaseItems WHERE TypedBaseItems.UserDataKey = UserDatas.key)
|
||||||
""");
|
""");
|
||||||
|
|
||||||
|
var importedUserData = new Dictionary<Guid, List<UserData>>();
|
||||||
foreach (var entity in queryResult)
|
foreach (var entity in queryResult)
|
||||||
{
|
{
|
||||||
var userData = MigrateLibraryDb.GetUserData(users, entity, userIdBlacklist, _logger);
|
var userData = MigrateLibraryDb.GetUserData(users, entity, userIdBlacklist, _logger);
|
||||||
@ -95,9 +98,22 @@ internal class MigrateLibraryUserData : IAsyncMigrationRoutine
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var ogId = userData.ItemId;
|
||||||
userData.ItemId = BaseItemRepository.PlaceholderId;
|
userData.ItemId = BaseItemRepository.PlaceholderId;
|
||||||
userData.RetentionDate = retentionDate;
|
userData.RetentionDate = retentionDate;
|
||||||
dbContext.UserData.Add(userData);
|
if (!importedUserData.TryGetValue(ogId, out var importUserData))
|
||||||
|
{
|
||||||
|
importUserData = [];
|
||||||
|
importedUserData[ogId] = importUserData;
|
||||||
|
}
|
||||||
|
|
||||||
|
importUserData.Add(userData);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var item in importedUserData)
|
||||||
|
{
|
||||||
|
await dbContext.UserData.Where(e => e.ItemId == item.Key).ExecuteDeleteAsync(cancellationToken).ConfigureAwait(false);
|
||||||
|
dbContext.UserData.AddRange(item.Value.DistinctBy(e => e.CustomDataKey)); // old userdata can have fucked up duplicates
|
||||||
}
|
}
|
||||||
|
|
||||||
_logger.LogInformation("Try saving {NewSaved} UserData entries.", dbContext.UserData.Local.Count);
|
_logger.LogInformation("Try saving {NewSaved} UserData entries.", dbContext.UserData.Local.Count);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user