aboutsummaryrefslogtreecommitdiff
path: root/server/src/library.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-01-11 23:16:10 +0100
committermetamuffin <metamuffin@disroot.org>2023-01-11 23:16:10 +0100
commit43e986b5e626b339095c118fa79ba6cd011aeb9f (patch)
treeaeb70c1233d6bade2d04e86086f48e88b72f3815 /server/src/library.rs
parent0f944c90380b28e010211f3c8d57423e38bb2c11 (diff)
downloadjellything-43e986b5e626b339095c118fa79ba6cd011aeb9f.tar
jellything-43e986b5e626b339095c118fa79ba6cd011aeb9f.tar.bz2
jellything-43e986b5e626b339095c118fa79ba6cd011aeb9f.tar.zst
doesnt work but should
Diffstat (limited to 'server/src/library.rs')
-rw-r--r--server/src/library.rs19
1 files changed, 14 insertions, 5 deletions
diff --git a/server/src/library.rs b/server/src/library.rs
index c46937a..4bded8a 100644
--- a/server/src/library.rs
+++ b/server/src/library.rs
@@ -22,6 +22,7 @@ pub struct Directory {
#[derive(Debug, Clone)]
pub struct Item {
+ pub fs_path: PathBuf,
pub lib_path: PathBuf,
pub identifier: String,
pub data: ItemInfo,
@@ -49,12 +50,18 @@ impl Library {
}
impl Node {
- pub fn get_directory(&self) -> anyhow::Result<&Directory> {
+ pub fn get_directory(&self) -> anyhow::Result<Arc<Directory>> {
match self {
- Node::Directory(d) => Ok(d),
+ Node::Directory(d) => Ok(d.clone()),
Node::Item(_) => bail!("not a directory"),
}
}
+ pub fn get_item(&self) -> anyhow::Result<Arc<Item>> {
+ match self {
+ Node::Item(i) => Ok(i.clone()),
+ Node::Directory(_) => bail!("not an item"),
+ }
+ }
pub fn title(&self) -> &str {
match self {
Node::Directory(d) => &d.data.name,
@@ -86,9 +93,10 @@ impl Node {
.read_dir()?
.filter_map(|e| {
let e = e.unwrap();
- eprintln!("{:?}",e.path());
- eprintln!("{:?}",e.path().extension());
- if e.path().extension() == Some(OsStr::new("json"))
+ eprintln!("{:?}", e.path());
+ eprintln!("{:?}", e.path().extension());
+ if (e.path().extension() == Some(OsStr::new("json"))
+ && e.path().file_name() != Some(OsStr::new("directory.json")))
|| e.metadata().unwrap().is_dir()
{
Some(e.path())
@@ -121,6 +129,7 @@ impl Node {
.unwrap()
.to_string();
Ok(Node::Item(Arc::new(Item {
+ fs_path: path.clone(),
lib_path: lib_path.join(identifier.clone()),
data,
identifier,