MCPcopy Create free account
hub / github.com/GraphLite-AI/GraphLite / execute

Method execute

graphlite/src/catalog/providers/graph_metadata.rs:717–928  ·  view source on GitHub ↗
(&mut self, op: CatalogOperation)

Source from the content-addressed store, hash-verified

715 }
716
717 fn execute(&mut self, op: CatalogOperation) -> CatalogResult<CatalogResponse> {
718 match op {
719 CatalogOperation::Create {
720 entity_type,
721 name,
722 params,
723 } => match entity_type {
724 EntityType::Graph => {
725 let graph = Graph::from_params(name.clone(), &params);
726 self.add_graph(graph)?;
727 Ok(CatalogResponse::Success {
728 data: Some(json!({ "message": format!("Graph '{}' created", name) })),
729 })
730 }
731 EntityType::GraphType => {
732 let graph_type = GraphType::from_params(name.clone(), &params);
733 self.add_graph_type(graph_type)?;
734 Ok(CatalogResponse::Success {
735 data: Some(json!({ "message": format!("Graph type '{}' created", name) })),
736 })
737 }
738 EntityType::VertexType => {
739 let graph_type_name = params
740 .get("graph_type")
741 .and_then(|v| v.as_str())
742 .ok_or_else(|| {
743 CatalogError::InvalidParameters(
744 "Missing 'graph_type' parameter".to_string(),
745 )
746 })?;
747
748 let vertex_type = serde_json::from_value::<VertexType>(params.clone())
749 .map_err(|e| CatalogError::InvalidParameters(e.to_string()))?;
750
751 self.add_vertex_type_to_graph_type(graph_type_name, vertex_type)?;
752 Ok(CatalogResponse::Success {
753 data: Some(
754 json!({ "message": format!("Vertex type '{}' added to graph type '{}'", name, graph_type_name) }),
755 ),
756 })
757 }
758 EntityType::EdgeType => {
759 let graph_type_name = params
760 .get("graph_type")
761 .and_then(|v| v.as_str())
762 .ok_or_else(|| {
763 CatalogError::InvalidParameters(
764 "Missing 'graph_type' parameter".to_string(),
765 )
766 })?;
767
768 let edge_type = serde_json::from_value::<EdgeType>(params.clone())
769 .map_err(|e| CatalogError::InvalidParameters(e.to_string()))?;
770
771 self.add_edge_type_to_graph_type(graph_type_name, edge_type)?;
772 Ok(CatalogResponse::Success {
773 data: Some(
774 json!({ "message": format!("Edge type '{}' added to graph type '{}'", name, graph_type_name) }),

Calls 15

cloneMethod · 0.80
add_graph_typeMethod · 0.80
remove_graph_typeMethod · 0.80
get_graphs_by_schemaMethod · 0.80
update_graphMethod · 0.80
add_graphMethod · 0.45
getMethod · 0.45
as_strMethod · 0.45
remove_graphMethod · 0.45