diff options
author | metamuffin <metamuffin@disroot.org> | 2025-01-29 18:03:06 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-01-29 18:03:06 +0100 |
commit | db511d3fe50f05329615f718515fab1b80d9e06a (patch) | |
tree | 7969fea01be100cbe4385ad13a14940a987ac513 /tool/src/migrate.rs | |
parent | 82e8a55a1496ae9132e13e7286fe1c0d57d586d3 (diff) | |
download | jellything-db511d3fe50f05329615f718515fab1b80d9e06a.tar jellything-db511d3fe50f05329615f718515fab1b80d9e06a.tar.bz2 jellything-db511d3fe50f05329615f718515fab1b80d9e06a.tar.zst |
no direct redb access
Diffstat (limited to 'tool/src/migrate.rs')
-rw-r--r-- | tool/src/migrate.rs | 329 |
1 files changed, 159 insertions, 170 deletions
diff --git a/tool/src/migrate.rs b/tool/src/migrate.rs index ed70104..bb826b2 100644 --- a/tool/src/migrate.rs +++ b/tool/src/migrate.rs @@ -3,20 +3,6 @@ which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2025 metamuffin <metamuffin.org> */ -use crate::cli::{Action, MigrateMode}; -use anyhow::{bail, Context}; -use indicatif::ProgressIterator; -use jellybase::database::redb::ReadableTableMetadata; -use jellybase::database::{redb::ReadableTable, DataAcid, Ser, T_INVITE, T_USER, T_USER_NODE}; -use jellycommon::user::{NodeUserData, User}; -use log::{info, warn}; -use std::io::{BufRead, BufReader}; -use std::{ - fs::File, - io::{BufWriter, Write}, - path::Path, -}; - // macro_rules! process_tree { // ($mode:ident, $save_location:ident, $da:ident, $name:literal, $table:ident, $dt:tt) => {{ // let path = $save_location.join($name); @@ -90,172 +76,175 @@ use std::{ // } // } -pub fn migrate(action: Action) -> anyhow::Result<()> { - match action { - Action::Migrate { - mode, - save_location, - database, - } => { - std::fs::create_dir_all(&save_location)?; +use crate::cli::Action; - let da = DataAcid::open(&database)?; +pub fn migrate(_action: Action) -> anyhow::Result<()> { + // TODO still needed? + // match action { + // Action::Migrate { + // mode, + // save_location, + // database, + // } => { + // std::fs::create_dir_all(&save_location)?; - info!("processing 'user'"); - { - let path: &Path = &save_location.join("user"); - let da = &da; - match mode { - MigrateMode::Export => { - let mut o = BufWriter::new(File::create(path)?); - let txn = da.begin_read()?; - let table = txn.open_table(T_USER)?; + // let da = Database::open(&database)?; - let len = table.len()?; - for r in table.iter()?.progress_count(len) { - let (k, v) = r?; - serde_json::to_writer(&mut o, &(k.value(), v.value().0))?; - writeln!(&mut o)?; - } - drop(table); - } - MigrateMode::Import => { - { - let txn = da.begin_read()?; - let table = txn.open_table(T_USER)?; - if !table.is_empty()? { - bail!("tree not empty, `rm -rf` your db please :)") - } - } + // info!("processing 'user'"); + // { + // let path: &Path = &save_location.join("user"); + // let da = &da; + // match mode { + // MigrateMode::Export => { + // let mut o = BufWriter::new(File::create(path)?); + // let txn = da.begin_read()?; + // let table = txn.open_table(T_USER)?; - 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::<(String, User)>(l.as_str()) - .context("reading db dump item")?; - { - let txn = da.begin_write()?; - let mut table = txn.open_table(T_USER)?; - table.insert(k.as_str(), Ser(v))?; - drop(table); - txn.commit()? - } - } - } - } - }; - info!("processing 'user_node'"); - { - let path: &Path = &save_location.join("user_node"); - let da = &da; - match mode { - MigrateMode::Export => { - let mut o = BufWriter::new(File::create(path)?); - let txn = da.begin_read()?; - let table = txn.open_table(T_USER_NODE)?; + // let len = table.len()?; + // for r in table.iter()?.progress_count(len) { + // let (k, v) = r?; + // serde_json::to_writer(&mut o, &(k.value(), v.value().0))?; + // writeln!(&mut o)?; + // } + // drop(table); + // } + // MigrateMode::Import => { + // { + // let txn = da.begin_read()?; + // let table = txn.open_table(T_USER)?; + // if !table.is_empty()? { + // bail!("tree not empty, `rm -rf` your db please :)") + // } + // } - let len = table.len()?; - for r in table.iter()?.progress_count(len) { - let (k, v) = r?; - serde_json::to_writer(&mut o, &(k.value(), v.value().0))?; - writeln!(&mut o)?; - } - drop(table); - } - MigrateMode::Import => { - { - let txn = da.begin_read()?; - let table = txn.open_table(T_USER_NODE)?; - if !table.is_empty()? { - bail!("tree not empty, `rm -rf` your db please :)") - } - } + // 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::<(String, User)>(l.as_str()) + // .context("reading db dump item")?; + // { + // let txn = da.begin_write()?; + // let mut table = txn.open_table(T_USER)?; + // table.insert(k.as_str(), Ser(v))?; + // drop(table); + // txn.commit()? + // } + // } + // } + // } + // }; + // info!("processing 'user_node'"); + // { + // let path: &Path = &save_location.join("user_node"); + // let da = &da; + // match mode { + // MigrateMode::Export => { + // let mut o = BufWriter::new(File::create(path)?); + // let txn = da.begin_read()?; + // let table = txn.open_table(T_USER_NODE)?; - 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::<((String, String), NodeUserData)>( - l.as_str(), - ) - .context("reading db dump item")?; - { - let txn = da.begin_write()?; - let mut table = txn.open_table(T_USER_NODE)?; + // let len = table.len()?; + // for r in table.iter()?.progress_count(len) { + // let (k, v) = r?; + // serde_json::to_writer(&mut o, &(k.value(), v.value().0))?; + // writeln!(&mut o)?; + // } + // drop(table); + // } + // MigrateMode::Import => { + // { + // let txn = da.begin_read()?; + // let table = txn.open_table(T_USER_NODE)?; + // if !table.is_empty()? { + // bail!("tree not empty, `rm -rf` your db please :)") + // } + // } - table.insert((k.0.as_str(), k.1.as_str()), Ser(v))?; - drop(table); - txn.commit()? - } - } - } - } - }; - info!("processing 'invite'"); - { - let path: &Path = &save_location.join("invite"); - let da = &da; - match mode { - MigrateMode::Export => { - let mut o = BufWriter::new(File::create(path)?); - let txn = da.begin_read()?; - let table = txn.open_table(T_INVITE)?; + // 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::<((String, String), NodeUserData)>( + // l.as_str(), + // ) + // .context("reading db dump item")?; + // { + // let txn = da.begin_write()?; + // let mut table = txn.open_table(T_USER_NODE)?; - let len = table.len()?; - for r in table.iter()?.progress_count(len) { - let (k, v) = r?; - serde_json::to_writer(&mut o, &(k.value(), v.value().0))?; - writeln!(&mut o)?; - } - drop(table); - } - MigrateMode::Import => { - { - let txn = da.begin_read()?; - let table = txn.open_table(T_INVITE)?; - if !table.is_empty()? { - bail!("tree not empty, `rm -rf` your db please :)") - } - } + // table.insert((k.0.as_str(), k.1.as_str()), Ser(v))?; + // drop(table); + // txn.commit()? + // } + // } + // } + // } + // }; + // info!("processing 'invite'"); + // { + // let path: &Path = &save_location.join("invite"); + // let da = &da; + // match mode { + // MigrateMode::Export => { + // let mut o = BufWriter::new(File::create(path)?); + // let txn = da.begin_read()?; + // let table = txn.open_table(T_INVITE)?; - 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::<(String, ())>(l.as_str()) - .context("reading db dump item")?; - { - let txn = da.begin_write()?; - let mut table = txn.open_table(T_INVITE)?; + // let len = table.len()?; + // for r in table.iter()?.progress_count(len) { + // let (k, v) = r?; + // serde_json::to_writer(&mut o, &(k.value(), v.value().0))?; + // writeln!(&mut o)?; + // } + // drop(table); + // } + // MigrateMode::Import => { + // { + // let txn = da.begin_read()?; + // let table = txn.open_table(T_INVITE)?; + // if !table.is_empty()? { + // bail!("tree not empty, `rm -rf` your db please :)") + // } + // } - table.insert(k.as_str(), Ser(()))?; - drop(table); - txn.commit()? - } - } - } - } - }; - info!("done"); - } - _ => unreachable!(), - } + // 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::<(String, ())>(l.as_str()) + // .context("reading db dump item")?; + // { + // let txn = da.begin_write()?; + // let mut table = txn.open_table(T_INVITE)?; + + // table.insert(k.as_str(), Ser(()))?; + // drop(table); + // txn.commit()? + // } + // } + // } + // } + // }; + // info!("done"); + // } + // _ => unreachable!(), + // } Ok(()) } /* |