use crate::define_logical_binary_input_node;
use linkrs_core::types::EdgeDirection;
use linkrs_core::types::VertexId;
use linkrs_core::Value;
define_logical_binary_input_node! {
pub struct LogicalMultiShortestPathNode {
steps: usize,
left_vid_var: String,
right_vid_var: String,
termination_var: String,
single_shortest: bool,
edge_types: Vec<String>,
direction: EdgeDirection,
target_vertex_ids: Vec<Value>,
}
enum: MultiShortestPath
input: BinaryInputNode
}
define_logical_binary_input_node! {
pub struct LogicalBFSShortestNode {
space_id: u64,
steps: usize,
edge_types: Vec<String>,
with_walk: bool,
with_loop: bool,
reverse: bool,
}
enum: BFSShortest
input: BinaryInputNode
}
define_logical_binary_input_node! {
pub struct LogicalAllPathsNode {
space_id: u64,
steps: usize,
edge_types: Vec<String>,
min_hop: usize,
max_hop: usize,
path_uniqueness: crate::planning::plan::core::nodes::traversal::path_algorithms::PathUniqueness,
direction: EdgeDirection,
has_step_limit: bool,
limit: i64,
offset: i64,
filter: Option<linkrs_core::types::expr::contextual::ContextualExpression>,
start_vertex_ids: Vec<VertexId>,
end_vertex_ids: Vec<VertexId>,
}
enum: AllPaths
input: BinaryInputNode
}
define_logical_binary_input_node! {
pub struct LogicalShortestPathNode {
space_id: u64,
edge_types: Vec<String>,
max_step: usize,
weight_expression: Option<String>,
heuristic_expression: Option<String>,
no_reverse: bool,
start_vertex_ids: Vec<Value>,
end_vertex_ids: Vec<Value>,
}
enum: ShortestPath
input: BinaryInputNode
}