Feature/backup on migration (#13754)

* Added generalised backup for migrations

* Added backup strategy to MigrateLibraryDb

* Added missing namespace

* Fix merge issues

* Fixed style issue

* change fast backup key to timestamp

* Update src/Jellyfin.Database/Jellyfin.Database.Providers.Sqlite/SqliteDatabaseProvider.cs

* Update Fields

* applied review comments
This commit is contained in:
JPVenson
2025-03-27 03:23:36 +01:00
committed by GitHub
parent 08dbb5c842
commit 296b17bf44
7 changed files with 123 additions and 27 deletions
@@ -1,3 +1,4 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
@@ -45,4 +46,20 @@ public interface IJellyfinDatabaseProvider
/// <param name="cancellationToken">The token that will be used to abort the operation.</param>
/// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>
Task RunShutdownTask(CancellationToken cancellationToken);
/// <summary>
/// Runs a full Database backup that can later be restored to.
/// </summary>
/// <param name="cancellationToken">A cancelation token.</param>
/// <returns>A key to identify the backup.</returns>
/// <exception cref="NotImplementedException">May throw an NotImplementException if this operation is not supported for this database.</exception>
Task<string> MigrationBackupFast(CancellationToken cancellationToken);
/// <summary>
/// Restores a backup that has been previously created by <see cref="MigrationBackupFast(CancellationToken)"/>.
/// </summary>
/// <param name="key">The key to the backup from which the current database should be restored from.</param>
/// <param name="cancellationToken">A cancelation token.</param>
/// <returns>A <see cref="Task"/> representing the result of the asynchronous operation.</returns>
Task RestoreBackupFast(string key, CancellationToken cancellationToken);
}