Skip to main content

relay_knowledge/storage/partitioned/
repository_set_store.rs

1use crate::{
2    domain::{
3        CodeRepositoryCrossEdge, CodeRepositorySet, CodeRepositorySetMember,
4        CodeRepositorySetRefreshSummary, CodeRepositorySetStatus,
5    },
6    storage::{
7        CodeRepositorySetEdgeSelector, CodeRepositorySetMemberSeed,
8        CodeRepositorySetRefreshPublication, CodeRepositorySetRefreshTaskClaimRequest,
9        CodeRepositorySetRefreshTaskCompletion, CodeRepositorySetRefreshTaskFailure,
10        CodeRepositorySetRefreshTaskSeed, CodeRepositorySetSeed, CodeRepositorySetStore,
11        StorageError, StorageFuture,
12    },
13};
14
15use super::PartitionedSqliteKnowledgeStore;
16
17impl CodeRepositorySetStore for PartitionedSqliteKnowledgeStore {
18    fn create_code_repository_set(
19        &self,
20        seed: CodeRepositorySetSeed,
21    ) -> StorageFuture<'_, CodeRepositorySet> {
22        self.control.create_code_repository_set(seed)
23    }
24
25    fn add_code_repository_set_member(
26        &self,
27        seed: CodeRepositorySetMemberSeed,
28    ) -> StorageFuture<'_, CodeRepositorySetMember> {
29        self.control.add_code_repository_set_member(seed)
30    }
31
32    fn remove_code_repository_set_member(
33        &self,
34        set_alias: String,
35        repository_alias: String,
36    ) -> StorageFuture<'_, CodeRepositorySetMember> {
37        self.control
38            .remove_code_repository_set_member(set_alias, repository_alias)
39    }
40
41    fn code_repository_set(
42        &self,
43        set_alias: String,
44    ) -> StorageFuture<'_, Option<CodeRepositorySet>> {
45        self.control.code_repository_set(set_alias)
46    }
47
48    fn code_repository_set_status(
49        &self,
50        set_alias: String,
51    ) -> StorageFuture<'_, Option<CodeRepositorySetStatus>> {
52        self.control.code_repository_set_status(set_alias)
53    }
54
55    fn refresh_code_repository_set_overlay(
56        &self,
57        set_alias: String,
58        _publication: CodeRepositorySetRefreshPublication,
59    ) -> StorageFuture<'_, CodeRepositorySetRefreshSummary> {
60        Box::pin(async move {
61            Err(StorageError::InvalidInput(format!(
62                "repository set overlay refresh for '{set_alias}' requires the single_sqlite topology until cross-shard import/export aggregation is implemented"
63            )))
64        })
65    }
66
67    fn code_repository_set_cross_edges(
68        &self,
69        set_id: String,
70    ) -> StorageFuture<'_, Vec<CodeRepositoryCrossEdge>> {
71        self.control.code_repository_set_cross_edges(set_id)
72    }
73
74    fn code_repository_set_cross_edges_for_selector(
75        &self,
76        set_id: String,
77        selector: CodeRepositorySetEdgeSelector,
78    ) -> StorageFuture<'_, Vec<CodeRepositoryCrossEdge>> {
79        self.control
80            .code_repository_set_cross_edges_for_selector(set_id, selector)
81    }
82
83    fn queue_code_repository_set_refresh_task(
84        &self,
85        task: CodeRepositorySetRefreshTaskSeed,
86    ) -> StorageFuture<'_, crate::domain::CodeRepositorySetRefreshTaskRecord> {
87        Box::pin(async move {
88            Err(StorageError::InvalidInput(format!(
89                "repository set overlay refresh task for '{}' requires the single_sqlite topology until cross-shard import/export aggregation is implemented",
90                task.set_alias
91            )))
92        })
93    }
94
95    fn claim_code_repository_set_refresh_task(
96        &self,
97        request: CodeRepositorySetRefreshTaskClaimRequest,
98    ) -> StorageFuture<'_, Option<crate::domain::CodeRepositorySetRefreshTaskRecord>> {
99        self.control.claim_code_repository_set_refresh_task(request)
100    }
101
102    fn complete_code_repository_set_refresh_task(
103        &self,
104        request: CodeRepositorySetRefreshTaskCompletion,
105    ) -> StorageFuture<'_, crate::domain::CodeRepositorySetRefreshTaskRecord> {
106        self.control
107            .complete_code_repository_set_refresh_task(request)
108    }
109
110    fn fail_code_repository_set_refresh_task(
111        &self,
112        request: CodeRepositorySetRefreshTaskFailure,
113    ) -> StorageFuture<'_, crate::domain::CodeRepositorySetRefreshTaskRecord> {
114        self.control.fail_code_repository_set_refresh_task(request)
115    }
116}