Nackup / Restore of total DB is working

This commit is contained in:
2021-03-19 00:02:59 +01:00
parent 154f8cc07a
commit f8c04d93e2
7 changed files with 86 additions and 22 deletions

View File

@ -20,7 +20,7 @@ namespace StockInfo
{
private readonly IBackupRepository _backupRepository;
private readonly IBackupRoutines _backupRoutines;
public List<BackupRegister> CurrentBackups { get; set; } = new List<BackupRegister>();
public frmBackup(IBackupRepository backupRepository,IBackupRoutines backupRoutines)
{
InitializeComponent();
@ -43,12 +43,64 @@ namespace StockInfo
reg.BackupDbName = file;
reg.BackupPath = dir;
reg = _backupRepository.SaveBackupReging(reg);
txtBackupPath.Text = dir;
txtBackupFile.Text = file;
_backupRoutines.BackupSqliteDb(reg.DbName, Path.Combine(dir, file));
var cmbItem = new ComboboxItem(wholeFile, reg.Id);
var cmbItem = new ComboboxItem($"{reg.BackedUp.ToLocalTime()} {wholeFile}", reg.Id);
lstBackups.Items.Add(cmbItem);
CurrentBackups = _backupRepository.GetAllBackupRegisters().ToList();
};
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void frmBackup_Shown(object sender, EventArgs e)
{
CurrentBackups =_backupRepository.GetAllBackupRegisters().ToList();
lstBackups.Items.Clear();
foreach(var bckrg in CurrentBackups)
{
var cmbItem = new ComboboxItem($"{bckrg.BackedUp.ToLocalTime()} {Path.Combine(bckrg.BackupPath, bckrg.BackupDbName)}", bckrg.Id);
lstBackups.Items.Add(cmbItem);
}
}
private void btnRestore_Click(object sender, EventArgs e)
{
if (lstBackups.SelectedIndex != -1)
{
BackupRegister br = new();
br.Id = ((ComboboxItem)lstBackups.SelectedItem).HiddenValue;
var backupReg = _backupRepository.GetBackupRegisterById(br.Id);
if (File.Exists(backupReg.DbName))
{
File.Move(backupReg.DbName, "tempFile.bak",true);
}
_backupRoutines.BackupSqliteDb(Path.Combine(backupReg.BackupPath, backupReg.BackupDbName), backupReg.DbName);
UpdateBackupRegs(CurrentBackups);
MessageBox.Show($"Backup {Path.Combine(backupReg.BackupPath, backupReg.BackupDbName)} loaded !");
}
}
private void UpdateBackupRegs(List<BackupRegister> currentBackups)
{
var backupRegs = _backupRepository.GetAllBackupRegisters();
var result = currentBackups.Where(cb => backupRegs.All(br => br.BackupDbName != cb.BackupDbName || br.BackupPath != cb.BackupPath));
foreach(var br in result)
{
_backupRepository.SaveBackupReging(new BackupRegister
{
BackedUp = br.BackedUp,
BackupDbName = br.BackupDbName,
BackupPath = br.BackupPath,
DbName = br.DbName,
Id = 0
});
}
}
}
}