#![allow(
dead_code,
reason = "PHASE-01 foundation — types consumed in PHASE-02+"
)]
use std::path::PathBuf;
use std::sync::Arc;
use async_trait::async_trait;
use tokio::sync::RwLock;
use crate::catalog::graph::CatalogGraph;
use crate::map_server::error::MapServerError;
pub(crate) struct AppState {
pub(crate) root: PathBuf,
pub(crate) graph: Arc<RwLock<CatalogGraph>>,
pub(crate) dot_renderer: Arc<dyn DotRenderer>,
}
pub(crate) struct Config {
pub(crate) root: PathBuf,
pub(crate) graph: CatalogGraph,
pub(crate) port: u16,
pub(crate) open: bool,
pub(crate) focus: Option<String>,
pub(crate) depth: u8,
}
#[async_trait]
pub(crate) trait DotRenderer: Send + Sync {
async fn render_svg(&self, _dot: &[u8]) -> Result<Vec<u8>, MapServerError>;
}
pub(crate) struct RealDotRenderer;