mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-12-16 05:53:03 +03:00
Merge branch 'master' into feature/DatabaseRefactor
This commit is contained in:
@@ -94,7 +94,7 @@ public class MigrateLibraryDb : IMigrationRoutine
|
||||
Audio, ExternalServiceId, IsInMixedFolder, DateLastSaved, LockedFields, Studios, Tags, TrailerTypes, OriginalTitle, PrimaryVersionId,
|
||||
DateLastMediaAdded, Album, LUFS, NormalizationGain, CriticRating, IsVirtualItem, SeriesName, UserDataKey, SeasonName, SeasonId, SeriesId,
|
||||
PresentationUniqueKey, InheritedParentalRatingValue, ExternalSeriesId, Tagline, ProviderIds, Images, ProductionLocations, ExtraIds, TotalBitrate,
|
||||
ExtraType, Artists, AlbumArtists, ExternalId, SeriesPresentationUniqueKey, ShowId, OwnerId, MediaType FROM TypedBaseItems
|
||||
ExtraType, Artists, AlbumArtists, ExternalId, SeriesPresentationUniqueKey, ShowId, OwnerId, MediaType, SortName, CleanName FROM TypedBaseItems
|
||||
""";
|
||||
dbContext.BaseItems.ExecuteDelete();
|
||||
|
||||
@@ -168,7 +168,6 @@ public class MigrateLibraryDb : IMigrationRoutine
|
||||
dbContext.UserData.ExecuteDelete();
|
||||
|
||||
var users = dbContext.Users.AsNoTracking().ToImmutableArray();
|
||||
var oldUserdata = new Dictionary<string, UserData>();
|
||||
|
||||
foreach (var entity in queryResult)
|
||||
{
|
||||
@@ -189,6 +188,8 @@ public class MigrateLibraryDb : IMigrationRoutine
|
||||
dbContext.UserData.Add(userData);
|
||||
}
|
||||
|
||||
users.Clear();
|
||||
legacyBaseItemWithUserKeys.Clear();
|
||||
_logger.LogInformation("Try saving {0} UserData entries.", dbContext.UserData.Local.Count);
|
||||
dbContext.SaveChanges();
|
||||
|
||||
@@ -225,11 +226,12 @@ public class MigrateLibraryDb : IMigrationRoutine
|
||||
dbContext.PeopleBaseItemMap.ExecuteDelete();
|
||||
|
||||
var peopleCache = new Dictionary<string, (People Person, List<PeopleBaseItemMap> Items)>();
|
||||
var baseItemIds = dbContext.BaseItems.Select(b => b.Id).ToHashSet();
|
||||
|
||||
foreach (SqliteDataReader reader in connection.Query(personsQuery))
|
||||
{
|
||||
var itemId = reader.GetGuid(0);
|
||||
if (!dbContext.BaseItems.Any(f => f.Id == itemId))
|
||||
if (!baseItemIds.Contains(itemId))
|
||||
{
|
||||
_logger.LogError("Dont save person {0} because its not in use by any BaseItem", reader.GetString(1));
|
||||
continue;
|
||||
@@ -261,12 +263,16 @@ public class MigrateLibraryDb : IMigrationRoutine
|
||||
});
|
||||
}
|
||||
|
||||
baseItemIds.Clear();
|
||||
|
||||
foreach (var item in peopleCache)
|
||||
{
|
||||
dbContext.Peoples.Add(item.Value.Person);
|
||||
dbContext.PeopleBaseItemMap.AddRange(item.Value.Items.DistinctBy(e => (e.ItemId, e.PeopleId)));
|
||||
}
|
||||
|
||||
peopleCache.Clear();
|
||||
|
||||
_logger.LogInformation("Try saving {0} People entries.", dbContext.MediaStreamInfos.Local.Count);
|
||||
dbContext.SaveChanges();
|
||||
migrationTotalTime += stopwatch.Elapsed;
|
||||
@@ -1029,6 +1035,16 @@ public class MigrateLibraryDb : IMigrationRoutine
|
||||
entity.MediaType = mediaType;
|
||||
}
|
||||
|
||||
if (reader.TryGetString(index++, out var sortName))
|
||||
{
|
||||
entity.SortName = sortName;
|
||||
}
|
||||
|
||||
if (reader.TryGetString(index++, out var cleanName))
|
||||
{
|
||||
entity.CleanName = cleanName;
|
||||
}
|
||||
|
||||
var baseItem = BaseItemRepository.DeserialiseBaseItem(entity, _logger, null, false);
|
||||
var dataKeys = baseItem.GetUserDataKeys();
|
||||
userDataKeys.AddRange(dataKeys);
|
||||
|
||||
Reference in New Issue
Block a user