use std::sync::Arc;
use crate::engine::graph::algo::params::{AlgoParams, GraphAlgorithm};
use crate::engine::graph::edge_store::Direction;
use crate::engine::graph::traversal_options::GraphTraversalOptions;
#[derive(Debug, Clone)]
pub enum GraphOp {
EdgePut {
src_id: String,
label: String,
dst_id: String,
properties: Vec<u8>,
},
EdgeDelete {
src_id: String,
label: String,
dst_id: String,
},
Hop {
start_nodes: Vec<String>,
edge_label: Option<String>,
direction: Direction,
depth: usize,
options: GraphTraversalOptions,
rls_filters: Vec<u8>,
},
Neighbors {
node_id: String,
edge_label: Option<String>,
direction: Direction,
rls_filters: Vec<u8>,
},
Path {
src: String,
dst: String,
edge_label: Option<String>,
max_depth: usize,
options: GraphTraversalOptions,
rls_filters: Vec<u8>,
},
Subgraph {
start_nodes: Vec<String>,
edge_label: Option<String>,
depth: usize,
options: GraphTraversalOptions,
rls_filters: Vec<u8>,
},
RagFusion {
collection: String,
query_vector: Arc<[f32]>,
vector_top_k: usize,
edge_label: Option<String>,
direction: Direction,
expansion_depth: usize,
final_top_k: usize,
rrf_k: (f64, f64),
options: GraphTraversalOptions,
},
Algo {
algorithm: GraphAlgorithm,
params: AlgoParams,
},
Match {
query: Vec<u8>,
},
}