diff options
author | Florian Klink <flokli@flokli.de> | 2024-08-13T17·04+0300 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2024-08-13T18·39+0000 |
commit | c7845f3c882d0f1b215813bf0ef8231c2c03d7b6 (patch) | |
tree | 681774cbfa98e5021aa68b361bc937b88881b5c8 /tvix/nar-bridge/src | |
parent | 2f4185ff1a54e1bdbaa062a9e4e1c8137d141762 (diff) |
refactor(tvix/castore): move *Node and Directory to crate root r/8486
*Node and Directory are types of the tvix-castore model, not the tvix DirectoryService model. A DirectoryService only happens to send Directories. Move types into individual files in a nodes/ subdirectory, as it's gotten too cluttered in a single file, and (re-)export all types from the crate root. This has the effect that we now cannot poke at private fields directly from other files inside `crate::directoryservice` (as it's not all in the same file anymore), but that's a good thing, it now forces us to go through the proper accessors. For the same reasons, we currently also need to introduce the `rename` functions on each *Node directly. A followup is gonna move the names out of the individual enum kinds, so we can better represent "unnamed nodes". Change-Id: Icdb34dcfe454c41c94f2396e8e99973d27db8418 Reviewed-on: https://cl.tvl.fyi/c/depot/+/12199 Reviewed-by: yuka <yuka@yuka.dev> Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/nar-bridge/src')
-rw-r--r-- | tvix/nar-bridge/src/nar.rs | 2 | ||||
-rw-r--r-- | tvix/nar-bridge/src/narinfo.rs | 11 |
2 files changed, 6 insertions, 7 deletions
diff --git a/tvix/nar-bridge/src/nar.rs b/tvix/nar-bridge/src/nar.rs index 1dba05f5b38f..acbcfa2817bc 100644 --- a/tvix/nar-bridge/src/nar.rs +++ b/tvix/nar-bridge/src/nar.rs @@ -52,7 +52,7 @@ pub async fn get( StatusCode::NOT_FOUND })?; - let root_node: tvix_castore::directoryservice::Node = (&root_node).try_into().map_err(|e| { + let root_node: tvix_castore::Node = (&root_node).try_into().map_err(|e| { warn!(err=%e, "root node validation failed"); StatusCode::BAD_REQUEST })?; diff --git a/tvix/nar-bridge/src/narinfo.rs b/tvix/nar-bridge/src/narinfo.rs index a883ac88ce18..fc19bdc871cd 100644 --- a/tvix/nar-bridge/src/narinfo.rs +++ b/tvix/nar-bridge/src/narinfo.rs @@ -67,11 +67,10 @@ pub async fn get( })?; // encode the (unnamed) root node in the NAR url itself. - let root_node = tvix_castore::directoryservice::Node::try_from( - path_info.node.as_ref().expect("root node must not be none"), - ) - .unwrap() // PathInfo is validated - .rename("".into()); + let root_node = + tvix_castore::Node::try_from(path_info.node.as_ref().expect("root node must not be none")) + .unwrap() // PathInfo is validated + .rename("".into()); let mut buf = Vec::new(); Node::encode(&(&root_node).into(), &mut buf); @@ -126,7 +125,7 @@ pub async fn put( // Lookup root node with peek, as we don't want to update the LRU list. // We need to be careful to not hold the RwLock across the await point. - let maybe_root_node: Option<tvix_castore::directoryservice::Node> = root_nodes + let maybe_root_node: Option<tvix_castore::Node> = root_nodes .read() .peek(&narinfo.nar_hash) .and_then(|v| v.try_into().ok()); |