zen_engine/decision_graph/
error.rs1use serde::ser::SerializeMap;
2use serde::{Serialize, Serializer};
3use thiserror::Error;
4
5#[derive(Debug, Error)]
6pub enum DecisionGraphValidationError {
7 #[error("Invalid input node count: {0}")]
8 InvalidInputCount(u32),
9
10 #[error("Invalid output node count: {0}")]
11 InvalidOutputCount(u32),
12
13 #[error("Cyclic graph detected")]
14 CyclicGraph,
15
16 #[error("Missing node")]
17 MissingNode(String),
18}
19
20impl Serialize for DecisionGraphValidationError {
21 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
22 where
23 S: Serializer,
24 {
25 let mut map = serializer.serialize_map(None)?;
26
27 match &self {
28 DecisionGraphValidationError::InvalidInputCount(count) => {
29 map.serialize_entry("type", "invalidInputCount")?;
30 map.serialize_entry("nodeCount", count)?;
31 }
32 DecisionGraphValidationError::InvalidOutputCount(count) => {
33 map.serialize_entry("type", "invalidOutputCount")?;
34 map.serialize_entry("nodeCount", count)?;
35 }
36 DecisionGraphValidationError::MissingNode(node_id) => {
37 map.serialize_entry("type", "missingNode")?;
38 map.serialize_entry("nodeId", node_id)?;
39 }
40 DecisionGraphValidationError::CyclicGraph => {
41 map.serialize_entry("type", "cyclicGraph")?;
42 }
43 }
44
45 map.end()
46 }
47}