aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/SystemBackupService/IBackupService.cs
blob: 0c586d81195d9b44b10f47b4efa5a57ea71da833 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System;
using System.IO;
using System.Threading.Tasks;
using MediaBrowser.Controller.SystemBackupService;

namespace Jellyfin.Server.Implementations.SystemBackupService;

/// <summary>
/// Defines an interface to restore and backup the jellyfin system.
/// </summary>
public interface IBackupService
{
    /// <summary>
    /// Creates a new Backup zip file containing the current state of the application.
    /// </summary>
    /// <param name="backupOptions">The backup options.</param>
    /// <returns>A task.</returns>
    Task<BackupManifestDto> CreateBackupAsync(BackupOptionsDto backupOptions);

    /// <summary>
    /// Gets a list of backups that are available to be restored from.
    /// </summary>
    /// <returns>A list of backup paths.</returns>
    Task<BackupManifestDto[]> EnumerateBackups();

    /// <summary>
    /// Gets a single backup manifest if the path defines a valid Jellyfin backup archive.
    /// </summary>
    /// <param name="archivePath">The path to be loaded.</param>
    /// <returns>The containing backup manifest or null if not existing or compatiable.</returns>
    Task<BackupManifestDto?> GetBackupManifest(string archivePath);

    /// <summary>
    /// Restores an backup zip file created by jellyfin.
    /// </summary>
    /// <param name="archivePath">Path to the archive.</param>
    /// <returns>A Task.</returns>
    /// <exception cref="FileNotFoundException">Thrown when an invalid or missing file is specified.</exception>
    /// <exception cref="NotSupportedException">Thrown when attempt to load an unsupported backup is made.</exception>
    /// <exception cref="InvalidOperationException">Thrown for errors during the restore.</exception>
    Task RestoreBackupAsync(string archivePath);

    /// <summary>
    /// Schedules a Restore and restarts the server.
    /// </summary>
    /// <param name="archivePath">The path to the archive to restore from.</param>
    void ScheduleRestoreAndRestartServer(string archivePath);
}