aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-12-17 21:59:27 +0100
committermetamuffin <metamuffin@disroot.org>2023-12-17 21:59:27 +0100
commit19fb2e9d0996fc72dc370709111829fcf11811f3 (patch)
treec3bace5e18f6d591c1813ffc1a685099c8447d9c
parent2a26a6030e25127a3967dd5bccba1fb05d485ab1 (diff)
downloadjellything-19fb2e9d0996fc72dc370709111829fcf11811f3.tar
jellything-19fb2e9d0996fc72dc370709111829fcf11811f3.tar.bz2
jellything-19fb2e9d0996fc72dc370709111829fcf11811f3.tar.zst
tool: migrate user_node
-rw-r--r--tool/src/migrate.rs14
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(())