aboutsummaryrefslogtreecommitdiff
path: root/server/src/import.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-08-01 15:24:09 +0200
committermetamuffin <metamuffin@disroot.org>2023-08-01 15:24:09 +0200
commit551e62a6012284823d6b22a9257c3fae07de7fd9 (patch)
tree506c20d23a73b57acaa19f3abfa00ec5cc16a315 /server/src/import.rs
parentdbb8c1c2f0035ea41224dec319a996b89e13ec84 (diff)
downloadjellything-551e62a6012284823d6b22a9257c3fae07de7fd9.tar
jellything-551e62a6012284823d6b22a9257c3fae07de7fd9.tar.bz2
jellything-551e62a6012284823d6b22a9257c3fae07de7fd9.tar.zst
store parent node and show "go up" button
Diffstat (limited to 'server/src/import.rs')
-rw-r--r--server/src/import.rs19
1 files changed, 12 insertions, 7 deletions
diff --git a/server/src/import.rs b/server/src/import.rs
index 72fb399..c8f4f10 100644
--- a/server/src/import.rs
+++ b/server/src/import.rs
@@ -13,11 +13,15 @@ pub fn import(db: &Database) -> anyhow::Result<()> {
info!("clearing node tree");
db.node.clear()?;
info!("importing...");
- import_path(CONF.library_path.clone(), db).context("indexing")?;
+ import_path(CONF.library_path.clone(), db, None).context("indexing")?;
Ok(())
}
-pub fn import_path(path: PathBuf, db: &Database) -> anyhow::Result<Vec<String>> {
+pub fn import_path(
+ path: PathBuf,
+ db: &Database,
+ parent: Option<String>,
+) -> anyhow::Result<Vec<String>> {
if path.is_dir() {
let mpath = path.join("directory.json");
let children = path.read_dir()?.filter_map(|e| {
@@ -30,8 +34,9 @@ pub fn import_path(path: PathBuf, db: &Database) -> anyhow::Result<Vec<String>>
None
}
});
+ let identifier = path.file_name().unwrap().to_str().unwrap().to_string();
let children = children
- .map(|e| import_path(e, db))
+ .map(|e| import_path(e, db, Some(identifier.clone())))
.collect::<anyhow::Result<Vec<_>>>()?
.into_iter()
.flatten()
@@ -40,12 +45,10 @@ pub fn import_path(path: PathBuf, db: &Database) -> anyhow::Result<Vec<String>>
let mut data: Node =
serde_json::from_reader(File::open(mpath).context("metadata missing")?)?;
- let identifier = path.file_name().unwrap().to_str().unwrap().to_string();
-
data.public.children = children;
+ data.public.parent = parent;
info!("insert {identifier}");
db.node.insert(&identifier, &data)?;
-
Ok(vec![identifier])
} else {
Ok(children)
@@ -53,7 +56,7 @@ pub fn import_path(path: PathBuf, db: &Database) -> anyhow::Result<Vec<String>>
} else if path.is_file() {
info!("loading item {path:?}");
let datafile = File::open(path.clone()).context("cant load metadata")?;
- let data: Node = serde_json::from_reader(datafile).context("invalid metadata")?;
+ let mut data: Node = serde_json::from_reader(datafile).context("invalid metadata")?;
let identifier = path
.file_name()
.unwrap()
@@ -62,7 +65,9 @@ pub fn import_path(path: PathBuf, db: &Database) -> anyhow::Result<Vec<String>>
.strip_suffix(".jelly")
.unwrap()
.to_string();
+
info!("insert {identifier}");
+ data.public.parent = parent;
db.node.insert(&identifier, &data)?;
Ok(vec![identifier])
} else {