use crate::engines::graph::{
EngineAlgorithmId, EngineConfig, GraphEngineRegistry, GraphSolveRequest, GraphSolveResult,
};
use crate::errors::RenderError;
use crate::graph::Graph;
pub fn solve_graph_family(
diagram: &Graph,
engine_id: EngineAlgorithmId,
config: &EngineConfig,
request: &GraphSolveRequest,
) -> Result<GraphSolveResult, RenderError> {
engine_id.check_available()?;
let registry = GraphEngineRegistry::default();
let engine = registry.get_solver(engine_id).ok_or_else(|| RenderError {
message: format!("no engine registered for: {engine_id}"),
})?;
engine.solve(diagram, config, request)
}