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

Method get_subquery_result

graphlite/src/cache/cache_manager.rs:332–375  ·  view source on GitHub ↗

Get cached subquery result

(
        &self,
        subquery_ast: &str,
        outer_variables: Vec<(String, crate::storage::Value)>,
        subquery_type: SubqueryType,
    )

Source from the content-addressed store, hash-verified

330
331 /// Get cached subquery result
332 pub fn get_subquery_result(
333 &self,
334 subquery_ast: &str,
335 outer_variables: Vec<(String, crate::storage::Value)>,
336 subquery_type: SubqueryType,
337 ) -> Option<SubqueryCacheHit> {
338 if !self.config.enabled {
339 return None;
340 }
341
342 let graph_version = *self.graph_version.read().unwrap();
343 let schema_version = *self.schema_version.read().unwrap();
344 let key = create_subquery_cache_key(
345 subquery_ast,
346 outer_variables,
347 graph_version,
348 schema_version,
349 subquery_type,
350 );
351
352 if let Some(result) = self.subquery_cache.get(&key) {
353 // Record cache hit event
354 self.record_event(CacheEvent::ResultCacheHit {
355 key: QueryCacheKey {
356 query_hash: key.subquery_hash,
357 parameters: vec![], // Subqueries don't have parameters in the same way
358 graph_version: key.graph_version,
359 user_context: None,
360 },
361 level: CacheLevel::L1,
362 saved_time_ms: 0, // Would need to track execution time
363 timestamp: Instant::now(),
364 });
365
366 Some(SubqueryCacheHit {
367 key,
368 result,
369 saved_execution_time: Duration::from_millis(0), // Would get from cache entry
370 hit_timestamp: Instant::now(),
371 })
372 } else {
373 None
374 }
375 }
376
377 /// Cache subquery result
378 pub fn cache_subquery_result(

Callers

nothing calls this directly

Calls 4

unwrapMethod · 0.80
record_eventMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected