aboutsummaryrefslogtreecommitdiff
path: root/server/src/routes/node.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/routes/node.rs')
-rw-r--r--server/src/routes/node.rs31
1 files changed, 17 insertions, 14 deletions
diff --git a/server/src/routes/node.rs b/server/src/routes/node.rs
index d7ef0b5..d8d9ba5 100644
--- a/server/src/routes/node.rs
+++ b/server/src/routes/node.rs
@@ -33,11 +33,7 @@ pub fn r_node(ri: RequestInfo<'_>, slug: &str) -> MyResult<RawHtml<String>> {
children = c_children(txn, row, &n)?;
credits = c_credits(txn, &n)?;
credited = c_credited(txn, row)?;
- nku = Some(Nku {
- node: Cow::Owned(n),
- userdata: Cow::Borrowed(EMPTY),
- role: None,
- });
+ nku = Some(create_nku(txn, row)?);
}
Ok(())
})?;
@@ -80,11 +76,7 @@ fn c_children(txn: &mut dyn Transaction, row: u64, node: &Object) -> Result<Vec<
let mut list = Vec::new();
for (row, _) in children_rows {
- list.push(Nku {
- node: Cow::Owned(txn.get(row)?.unwrap()),
- role: None,
- userdata: Cow::Borrowed(EMPTY),
- });
+ list.push(create_nku(txn, row)?);
}
Ok(list)
}
@@ -103,9 +95,8 @@ fn c_credits(txn: &mut dyn Transaction, node: &Object) -> Result<Vec<(Tag, Vec<N
cats.entry(cred.get(CR_KIND).unwrap_or(CRCAT_CREW))
.or_default()
.push(Nku {
- node: Cow::Owned(txn.get(row)?.unwrap()),
role: cred.get(CR_ROLE).map(String::from).map(Cow::Owned),
- userdata: Cow::Borrowed(EMPTY),
+ ..create_nku(txn, row)?
});
}
let mut cats = cats.into_iter().collect::<Vec<_>>();
@@ -137,10 +128,22 @@ fn c_credited(txn: &mut dyn Transaction, row: u64) -> Result<Vec<Nku<'static>>>
let mut list = Vec::new();
for (row, _) in children_rows {
list.push(Nku {
- node: Cow::Owned(txn.get(row)?.unwrap()),
role: None,
- userdata: Cow::Borrowed(EMPTY),
+ ..create_nku(txn, row)?
});
}
Ok(list)
}
+
+pub fn create_nku(txn: &mut dyn Transaction, row: u64) -> Result<Nku<'static>> {
+ let child_count = txn.count(Query {
+ filter: Filter::Match(Path(vec![NO_PARENT.0]), row.into()),
+ ..Default::default()
+ })?;
+ Ok(Nku {
+ node: Cow::Owned(txn.get(row)?.unwrap()),
+ role: None,
+ userdata: Cow::Borrowed(EMPTY),
+ child_count,
+ })
+}