You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.6 KiB
57 lines
1.6 KiB
using System;
|
|
using NLog;
|
|
using NzbDrone.Common.Disk;
|
|
using NzbDrone.Common.EnvironmentInfo;
|
|
using NzbDrone.Common.Extensions;
|
|
using NzbDrone.Common.Instrumentation;
|
|
|
|
namespace NzbDrone.Core.Datastore
|
|
{
|
|
public interface IRestoreDatabase
|
|
{
|
|
void Restore();
|
|
}
|
|
|
|
public class DatabaseRestorationService : IRestoreDatabase
|
|
{
|
|
private readonly IDiskProvider _diskProvider;
|
|
private readonly IAppFolderInfo _appFolderInfo;
|
|
private static readonly Logger Logger = NzbDroneLogger.GetLogger(typeof(DatabaseRestorationService));
|
|
|
|
public DatabaseRestorationService(IDiskProvider diskProvider, IAppFolderInfo appFolderInfo)
|
|
{
|
|
_diskProvider = diskProvider;
|
|
_appFolderInfo = appFolderInfo;
|
|
}
|
|
|
|
public void Restore()
|
|
{
|
|
var dbRestorePath = _appFolderInfo.GetDatabaseRestore();
|
|
|
|
if (!_diskProvider.FileExists(dbRestorePath))
|
|
{
|
|
return;
|
|
}
|
|
|
|
try
|
|
{
|
|
Logger.Info("Restoring Database");
|
|
|
|
var dbPath = _appFolderInfo.GetDatabase();
|
|
|
|
_diskProvider.DeleteFile(dbPath + "-shm");
|
|
_diskProvider.DeleteFile(dbPath + "-wal");
|
|
_diskProvider.DeleteFile(dbPath + "-journal");
|
|
_diskProvider.DeleteFile(dbPath);
|
|
|
|
_diskProvider.MoveFile(dbRestorePath, dbPath);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Logger.Error(e, "Failed to restore database");
|
|
throw;
|
|
}
|
|
}
|
|
}
|
|
}
|