use crate::types::NodeId;
use crate::graph::Direction;
#[derive(Debug, Clone)]
pub enum TraversalStep {
FollowEdge {
edge_type: Option<String>, direction: Direction,
},
Filter {
predicate: String, },
Limit {
count: usize,
},
Skip {
count: usize,
},
}
#[derive(Debug)]
pub struct TraversalState {
pub current_nodes: Vec<NodeId>,
pub visited_count: usize,
pub limit: Option<usize>,
pub skip: usize,
}
impl TraversalState {
pub fn new(start: NodeId) -> Self {
Self {
current_nodes: vec![start],
visited_count: 0,
limit: None,
skip: 0,
}
}
pub fn with_nodes(nodes: Vec<NodeId>) -> Self {
Self {
current_nodes: nodes,
visited_count: 0,
limit: None,
skip: 0,
}
}
}