aboutsummaryrefslogtreecommitdiff
path: root/tool
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-01-29 18:03:06 +0100
committermetamuffin <metamuffin@disroot.org>2025-01-29 18:03:06 +0100
commitdb511d3fe50f05329615f718515fab1b80d9e06a (patch)
tree7969fea01be100cbe4385ad13a14940a987ac513 /tool
parent82e8a55a1496ae9132e13e7286fe1c0d57d586d3 (diff)
downloadjellything-db511d3fe50f05329615f718515fab1b80d9e06a.tar
jellything-db511d3fe50f05329615f718515fab1b80d9e06a.tar.bz2
jellything-db511d3fe50f05329615f718515fab1b80d9e06a.tar.zst
no direct redb access
Diffstat (limited to 'tool')
-rw-r--r--tool/src/migrate.rs329
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(())
}
/*