mirror of
https://github.com/PR0M3TH3AN/Marlin.git
synced 2025-09-09 07:38:50 +00:00
Format restore logic
This commit is contained in:
@@ -9,6 +9,7 @@
|
|||||||
mod cli; // sub-command definitions and argument structs
|
mod cli; // sub-command definitions and argument structs
|
||||||
|
|
||||||
/* ── shared modules re-exported from libmarlin ─────────────────── */
|
/* ── shared modules re-exported from libmarlin ─────────────────── */
|
||||||
|
use libmarlin::backup::BackupManager;
|
||||||
use libmarlin::db::take_dirty;
|
use libmarlin::db::take_dirty;
|
||||||
use libmarlin::{config, db, logging, scan, utils::determine_scan_root};
|
use libmarlin::{config, db, logging, scan, utils::determine_scan_root};
|
||||||
|
|
||||||
@@ -106,8 +107,21 @@ fn main() -> Result<()> {
|
|||||||
|
|
||||||
Commands::Restore { backup_path } => {
|
Commands::Restore { backup_path } => {
|
||||||
drop(conn);
|
drop(conn);
|
||||||
db::restore(&backup_path, &cfg.db_path)
|
if backup_path.exists() {
|
||||||
.with_context(|| format!("Failed to restore DB from {}", backup_path.display()))?;
|
db::restore(&backup_path, &cfg.db_path).with_context(|| {
|
||||||
|
format!("Failed to restore DB from {}", backup_path.display())
|
||||||
|
})?;
|
||||||
|
} else {
|
||||||
|
let backups_dir = cfg.db_path.parent().unwrap().join("backups");
|
||||||
|
let manager = BackupManager::new(&cfg.db_path, &backups_dir)?;
|
||||||
|
let name = backup_path
|
||||||
|
.file_name()
|
||||||
|
.and_then(|n| n.to_str())
|
||||||
|
.context("invalid backup file name")?;
|
||||||
|
manager.restore_from_backup(name).with_context(|| {
|
||||||
|
format!("Failed to restore DB from {}", backup_path.display())
|
||||||
|
})?;
|
||||||
|
}
|
||||||
println!("Restored DB from {}", backup_path.display());
|
println!("Restored DB from {}", backup_path.display());
|
||||||
db::open(&cfg.db_path).with_context(|| {
|
db::open(&cfg.db_path).with_context(|| {
|
||||||
format!("Could not open restored DB at {}", cfg.db_path.display())
|
format!("Could not open restored DB at {}", cfg.db_path.display())
|
||||||
|
Reference in New Issue
Block a user