Execute a query with session ID This is the main entry point for query execution. # Arguments `query_text` - The GQL query string to execute `session_id` - Session ID for the query # Returns `Ok(QueryResult)` - Query result on success `Err(String)` - Error message on failure
(&self, query_text: &str, session_id: &str)
| 245 | /// * `Ok(QueryResult)` - Query result on success |
| 246 | /// * `Err(String)` - Error message on failure |
| 247 | pub fn process_query(&self, query_text: &str, session_id: &str) -> Result<QueryResult, String> { |
| 248 | // Parse query |
| 249 | let document = parse_query(query_text).map_err(|e| format!("Parse error: {:?}", e))?; |
| 250 | |
| 251 | // Get session |
| 252 | let session = self.session_provider.get_session(session_id); |
| 253 | |
| 254 | // Create execution request |
| 255 | let request = ExecutionRequest::new(document.statement) |
| 256 | .with_session(session) |
| 257 | .with_query_text(Some(query_text.to_string())); |
| 258 | |
| 259 | // Execute query |
| 260 | let result = self |
| 261 | .executor |
| 262 | .execute_query(request) |
| 263 | .map_err(|e| format!("Execution error: {:?}", e))?; |
| 264 | |
| 265 | // Process any session results (SET GRAPH, SET SCHEMA, etc.) |
| 266 | if let Some(ref session_result) = result.session_result { |
| 267 | self.handle_session_result(session_result, session_id)?; |
| 268 | } |
| 269 | |
| 270 | Ok(result) |
| 271 | } |
| 272 | |
| 273 | /// Handle session-modifying results (SET GRAPH, SET SCHEMA) |
| 274 | fn handle_session_result( |