diff options
Diffstat (limited to 'tool')
-rw-r--r-- | tool/src/migrate.rs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/tool/src/migrate.rs b/tool/src/migrate.rs index 7c24087..5037bf4 100644 --- a/tool/src/migrate.rs +++ b/tool/src/migrate.rs @@ -4,10 +4,10 @@ Copyright (C) 2023 metamuffin <metamuffin.org> */ use crate::{Action, MigrateMode}; -use anyhow::bail; +use anyhow::{bail, Context}; use indicatif::ProgressIterator; use jellybase::database::{typed_sled::Tree, Database}; -use log::info; +use log::{info, warn}; use serde::Serialize; use std::{ fs::File, @@ -27,6 +27,8 @@ pub(crate) fn migrate(action: Action) -> anyhow::Result<()> { info!("processing 'user'"); process_tree(mode, &save_location.join("user"), &db.user)?; + info!("processing 'user_node'"); + process_tree(mode, &save_location.join("user_node"), &db.user_node)?; info!("processing 'invite'"); process_tree(mode, &save_location.join("invite"), &db.invite)?; info!("processing 'node'"); @@ -79,10 +81,14 @@ fn import_tree< if !tree.is_empty() { bail!("tree not empty, `rm -rf` your db please :)") } - let i = BufReader::new(File::open(path)?); + let Ok(i) = File::open(path) else { + warn!("{path:?} does not exist; the import of that tree will be skipped."); + return Ok(()); + }; + let i = BufReader::new(i); for l in i.lines() { let l = l?; - let (k, v) = serde_json::from_str::<(K, V)>(&l)?; + let (k, v) = serde_json::from_str::<(K, V)>(&l).context("reading db dump item")?; tree.insert(&k, &v)?; } Ok(()) |