Skip to main content

reddb_server/application/
catalog.rs

1use crate::application::ports::RuntimeCatalogPort;
2use crate::catalog::{
3    CatalogAnalyticsJobStatus, CatalogAttentionSummary, CatalogConsistencyReport,
4    CatalogGraphProjectionStatus, CatalogIndexStatus, CatalogModelSnapshot, CollectionDescriptor,
5};
6use crate::runtime::RuntimeStats;
7use crate::{PhysicalAnalyticsJob, PhysicalGraphProjection, PhysicalIndexState, RedDBResult};
8
9pub struct CatalogUseCases<'a, P: ?Sized> {
10    runtime: &'a P,
11}
12
13impl<'a, P: RuntimeCatalogPort + ?Sized> CatalogUseCases<'a, P> {
14    pub fn new(runtime: &'a P) -> Self {
15        Self { runtime }
16    }
17
18    pub fn collections(&self) -> Vec<String> {
19        self.runtime.collections()
20    }
21
22    pub fn snapshot(&self) -> CatalogModelSnapshot {
23        self.runtime.catalog()
24    }
25
26    pub fn consistency_report(&self) -> CatalogConsistencyReport {
27        self.runtime.catalog_consistency_report()
28    }
29
30    pub fn attention_summary(&self) -> CatalogAttentionSummary {
31        self.runtime.catalog_attention_summary()
32    }
33
34    pub fn collection_attention(&self) -> Vec<CollectionDescriptor> {
35        self.runtime.collection_attention()
36    }
37
38    pub fn indexes(&self) -> Vec<PhysicalIndexState> {
39        self.runtime.indexes()
40    }
41
42    pub fn declared_indexes(&self) -> Vec<PhysicalIndexState> {
43        self.runtime.declared_indexes()
44    }
45
46    pub fn indexes_for_collection(&self, collection: &str) -> Vec<PhysicalIndexState> {
47        self.runtime.indexes_for_collection(collection)
48    }
49
50    pub fn declared_indexes_for_collection(&self, collection: &str) -> Vec<PhysicalIndexState> {
51        self.runtime.declared_indexes_for_collection(collection)
52    }
53
54    pub fn index_statuses(&self) -> Vec<CatalogIndexStatus> {
55        self.runtime.index_statuses()
56    }
57
58    pub fn index_attention(&self) -> Vec<CatalogIndexStatus> {
59        self.runtime.index_attention()
60    }
61
62    pub fn graph_projections(&self) -> RedDBResult<Vec<PhysicalGraphProjection>> {
63        self.runtime.graph_projections()
64    }
65
66    pub fn operational_graph_projections(&self) -> Vec<PhysicalGraphProjection> {
67        self.runtime.operational_graph_projections()
68    }
69
70    pub fn graph_projection_statuses(&self) -> Vec<CatalogGraphProjectionStatus> {
71        self.runtime.graph_projection_statuses()
72    }
73
74    pub fn graph_projection_attention(&self) -> Vec<CatalogGraphProjectionStatus> {
75        self.runtime.graph_projection_attention()
76    }
77
78    pub fn analytics_jobs(&self) -> RedDBResult<Vec<PhysicalAnalyticsJob>> {
79        self.runtime.analytics_jobs()
80    }
81
82    pub fn operational_analytics_jobs(&self) -> Vec<PhysicalAnalyticsJob> {
83        self.runtime.operational_analytics_jobs()
84    }
85
86    pub fn analytics_job_statuses(&self) -> Vec<CatalogAnalyticsJobStatus> {
87        self.runtime.analytics_job_statuses()
88    }
89
90    pub fn analytics_job_attention(&self) -> Vec<CatalogAnalyticsJobStatus> {
91        self.runtime.analytics_job_attention()
92    }
93
94    pub fn stats(&self) -> RuntimeStats {
95        self.runtime.stats()
96    }
97}