canic_core/workflow/directory/
mod.rs

1pub mod builders;
2
3pub use builders::*;
4
5use crate::{
6    dto::directory::{AppDirectoryView, SubnetDirectoryView},
7    ops::{
8        adapter::directory::{app_directory_to_view, subnet_directory_to_view},
9        runtime::env::EnvOps,
10        storage::directory::{AppDirectoryOps, SubnetDirectoryOps},
11    },
12};
13
14///
15/// AppDirectoryResolver
16///
17/// Resolves the canonical AppDirectory view:
18/// - Root rebuilds from registry
19/// - Non-root uses imported snapshot
20///
21pub struct AppDirectoryResolver;
22
23impl AppDirectoryResolver {
24    #[must_use]
25    pub fn resolve_view() -> AppDirectoryView {
26        let data = if EnvOps::is_root() {
27            RootAppDirectoryBuilder::build_from_registry()
28        } else {
29            AppDirectoryOps::export()
30        };
31
32        app_directory_to_view(data)
33    }
34}
35
36///
37/// SubnetDirectoryResolver
38///
39/// Resolves the canonical SubnetDirectory view:
40/// - Root rebuilds from registry
41/// - Non-root uses imported snapshot
42///
43pub struct SubnetDirectoryResolver;
44
45impl SubnetDirectoryResolver {
46    #[must_use]
47    pub fn resolve_view() -> SubnetDirectoryView {
48        let data = if EnvOps::is_root() {
49            RootSubnetDirectoryBuilder::build_from_registry()
50        } else {
51            SubnetDirectoryOps::export()
52        };
53
54        subnet_directory_to_view(data)
55    }
56}