relay_knowledge/storage/partitioned/
repository_set_store.rs1use 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}