Skip to main content

relay_knowledge/storage/contracts/code/
query.rs

1use crate::domain::{
2    CodeFeatureFlagGraph, CodeFeatureFlagRequest, CodeImpactRequest, CodeRepositoryReport,
3    CodeRepositoryTotals, CodeRetrievalHit, CodeRetrievalRequest, CodeSymbolGenerationCounts,
4    CodebaseViewRequest, CodebaseViewSnapshot,
5};
6
7use super::super::{StorageError, StorageFuture};
8use super::CodeImpactChanges;
9
10/// Snapshot-scoped code retrieval, impact, report, and view read capability.
11pub trait CodeQueryReadStore: Send + Sync {
12    fn search_code(
13        &self,
14        request: CodeRetrievalRequest,
15    ) -> StorageFuture<'_, Vec<CodeRetrievalHit>>;
16
17    fn search_code_feature_flags(
18        &self,
19        request: CodeFeatureFlagRequest,
20    ) -> StorageFuture<'_, Vec<CodeFeatureFlagGraph>> {
21        Box::pin(async move {
22            Err(StorageError::InvalidInput(format!(
23                "code feature flag search for repository '{}' is unavailable",
24                request.repository.repository
25            )))
26        })
27    }
28
29    fn search_code_feature_flags_scope(
30        &self,
31        source_scope: String,
32        _request: CodeFeatureFlagRequest,
33    ) -> StorageFuture<'_, Vec<CodeFeatureFlagGraph>> {
34        Box::pin(async move {
35            Err(StorageError::InvalidInput(format!(
36                "code feature flag search for source scope '{source_scope}' is unavailable"
37            )))
38        })
39    }
40
41    fn search_code_scope(
42        &self,
43        source_scope: String,
44        _request: CodeRetrievalRequest,
45    ) -> StorageFuture<'_, Vec<CodeRetrievalHit>> {
46        Box::pin(async move {
47            Err(StorageError::InvalidInput(format!(
48                "code search for source scope '{source_scope}' is unavailable"
49            )))
50        })
51    }
52
53    fn analyze_code_impact(
54        &self,
55        request: CodeImpactRequest,
56        changes: CodeImpactChanges,
57    ) -> StorageFuture<'_, Vec<CodeRetrievalHit>>;
58
59    fn analyze_code_impact_scope(
60        &self,
61        source_scope: String,
62        _request: CodeImpactRequest,
63        _changes: CodeImpactChanges,
64    ) -> StorageFuture<'_, Vec<CodeRetrievalHit>> {
65        Box::pin(async move {
66            Err(StorageError::InvalidInput(format!(
67                "code impact analysis for source scope '{source_scope}' is unavailable"
68            )))
69        })
70    }
71
72    fn codebase_view_snapshot(
73        &self,
74        source_scope: String,
75        _request: CodebaseViewRequest,
76        _row_limit: usize,
77    ) -> StorageFuture<'_, CodebaseViewSnapshot> {
78        Box::pin(async move {
79            Err(StorageError::InvalidInput(format!(
80                "codebase view snapshot for source scope '{source_scope}' is unavailable"
81            )))
82        })
83    }
84
85    fn code_repository_totals(&self) -> StorageFuture<'_, CodeRepositoryTotals> {
86        Box::pin(async {
87            Err(StorageError::InvalidInput(
88                "code repository totals are unavailable".to_owned(),
89            ))
90        })
91    }
92
93    fn code_repository_report(
94        &self,
95        repository: String,
96    ) -> StorageFuture<'_, CodeRepositoryReport> {
97        Box::pin(async move {
98            Err(StorageError::InvalidInput(format!(
99                "code repository report for '{repository}' is unavailable"
100            )))
101        })
102    }
103
104    fn code_repository_scope_symbol_generation_counts(
105        &self,
106        source_scope: String,
107    ) -> StorageFuture<'_, CodeSymbolGenerationCounts> {
108        Box::pin(async move {
109            Err(StorageError::InvalidInput(format!(
110                "code symbol generation counts for source scope '{source_scope}' are unavailable"
111            )))
112        })
113    }
114}