relay_knowledge/storage/contracts/
code_graph.rs1use crate::domain::{
2 CodeChunkRecord, CodeGraphBatch, CodeGraphCommitReceipt, CodeReferenceRecord, CodeSymbolRecord,
3 GraphVersion,
4};
5
6use super::StorageFuture;
7
8pub trait CodeGraphStore: Send + Sync {
10 fn commit_code_graph_batch(
11 &self,
12 batch: CodeGraphBatch,
13 ) -> StorageFuture<'_, CodeGraphCommitReceipt>;
14
15 fn search_code_symbols(
16 &self,
17 request: CodeSymbolSearchRequest,
18 ) -> StorageFuture<'_, Vec<CodeSymbolRecord>>;
19
20 fn search_code_references(
21 &self,
22 request: CodeReferenceSearchRequest,
23 ) -> StorageFuture<'_, Vec<CodeReferenceRecord>>;
24
25 fn search_code_chunks(
26 &self,
27 request: CodeChunkSearchRequest,
28 ) -> StorageFuture<'_, Vec<CodeChunkRecord>>;
29}
30
31#[derive(Debug, Clone, PartialEq, Eq)]
33pub struct CodeSymbolSearchRequest {
34 pub source_scope: Option<String>,
35 pub path: Option<String>,
36 pub name: Option<String>,
37 pub graph_version: GraphVersion,
38 pub limit: usize,
39}
40
41#[derive(Debug, Clone, PartialEq, Eq)]
43pub struct CodeReferenceSearchRequest {
44 pub source_scope: Option<String>,
45 pub path: Option<String>,
46 pub symbol_text: Option<String>,
47 pub target_symbol_id: Option<String>,
48 pub graph_version: GraphVersion,
49 pub limit: usize,
50}
51
52#[derive(Debug, Clone, PartialEq, Eq)]
54pub struct CodeChunkSearchRequest {
55 pub source_scope: Option<String>,
56 pub path: Option<String>,
57 pub query: Option<String>,
58 pub graph_version: GraphVersion,
59 pub limit: usize,
60}