diff options
Diffstat (limited to 'Jellyfin.Server/Migrations/Routines/MigrateUserData.cs')
| -rw-r--r-- | Jellyfin.Server/Migrations/Routines/MigrateUserData.cs | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/Jellyfin.Server/Migrations/Routines/MigrateUserData.cs b/Jellyfin.Server/Migrations/Routines/MigrateUserData.cs deleted file mode 100644 index 224534d43..000000000 --- a/Jellyfin.Server/Migrations/Routines/MigrateUserData.cs +++ /dev/null @@ -1,89 +0,0 @@ -using System; -using System.Collections.Immutable; -using System.IO; -using System.Linq; -using Emby.Server.Implementations.Data; -using Jellyfin.Data.Entities; -using Jellyfin.Server.Implementations; -using MediaBrowser.Controller; -using Microsoft.Data.Sqlite; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Logging; - -namespace Jellyfin.Server.Migrations.Routines; - -/// <summary> -/// The migration routine for migrating the userdata database to EF Core. -/// </summary> -public class MigrateUserData : IMigrationRoutine -{ - private const string DbFilename = "library.db"; - - private readonly ILogger<MigrateUserDb> _logger; - private readonly IServerApplicationPaths _paths; - private readonly IDbContextFactory<JellyfinDbContext> _provider; - - /// <summary> - /// Initializes a new instance of the <see cref="MigrateUserData"/> class. - /// </summary> - /// <param name="logger">The logger.</param> - /// <param name="provider">The database provider.</param> - /// <param name="paths">The server application paths.</param> - public MigrateUserData( - ILogger<MigrateUserDb> logger, - IDbContextFactory<JellyfinDbContext> provider, - IServerApplicationPaths paths) - { - _logger = logger; - _provider = provider; - _paths = paths; - } - - /// <inheritdoc/> - public Guid Id => Guid.Parse("5bcb4197-e7c0-45aa-9902-963bceab5798"); - - /// <inheritdoc/> - public string Name => "MigrateUserData"; - - /// <inheritdoc/> - public bool PerformOnNewInstall => false; - - /// <inheritdoc/> - public void Perform() - { - _logger.LogInformation("Migrating the userdata from library.db may take a while, do not stop Jellyfin."); - - var dataPath = _paths.DataPath; - using var connection = new SqliteConnection($"Filename={Path.Combine(dataPath, DbFilename)}"); - - connection.Open(); - using var dbContext = _provider.CreateDbContext(); - - var queryResult = connection.Query("SELECT key, userId, rating, played, playCount, isFavorite, playbackPositionTicks, lastPlayedDate, AudioStreamIndex, SubtitleStreamIndex FROM UserDatas"); - - dbContext.UserData.ExecuteDelete(); - - var users = dbContext.Users.AsNoTracking().ToImmutableArray(); - - foreach (SqliteDataReader dto in queryResult) - { - var entity = new UserData() - { - Key = dto.GetString(0), - UserId = users.ElementAt(dto.GetInt32(1)).Id, - Rating = dto.IsDBNull(2) ? null : dto.GetDouble(2), - Played = dto.GetBoolean(3), - PlayCount = dto.GetInt32(4), - IsFavorite = dto.GetBoolean(5), - PlaybackPositionTicks = dto.GetInt64(6), - LastPlayedDate = dto.IsDBNull(7) ? null : dto.GetDateTime(7), - AudioStreamIndex = dto.IsDBNull(8) ? null : dto.GetInt32(8), - SubtitleStreamIndex = dto.IsDBNull(9) ? null : dto.GetInt32(9), - }; - - dbContext.UserData.Add(entity); - } - - dbContext.SaveChanges(); - } -} |
