reactive_graph_dynamic_graph_impl/
dynamic_graph_system_impl.rs

1use std::sync::Arc;
2
3use async_trait::async_trait;
4use springtime_di::Component;
5use springtime_di::component_alias;
6
7use reactive_graph_dynamic_graph_api::DynamicGraphQueryService;
8use reactive_graph_dynamic_graph_api::DynamicGraphSchemaManager;
9use reactive_graph_dynamic_graph_api::DynamicGraphSystem;
10use reactive_graph_lifecycle::Lifecycle;
11use reactive_graph_reactive_service_api::ReactiveSystem;
12use reactive_graph_type_system_api::TypeSystem;
13
14#[derive(Component)]
15pub struct DynamicGraphSystemImpl {
16    dynamic_graph_query_service: Arc<dyn DynamicGraphQueryService + Send + Sync>,
17    dynamic_graph_schema_manager: Arc<dyn DynamicGraphSchemaManager + Send + Sync>,
18
19    type_system: Arc<dyn TypeSystem + Send + Sync>,
20    reactive_system: Arc<dyn ReactiveSystem + Send + Sync>,
21}
22
23#[async_trait]
24#[component_alias]
25impl DynamicGraphSystem for DynamicGraphSystemImpl {
26    fn get_dynamic_graph_query_service(&self) -> Arc<dyn DynamicGraphQueryService + Send + Sync> {
27        self.dynamic_graph_query_service.clone()
28    }
29
30    fn get_dynamic_graph_schema_manager(&self) -> Arc<dyn DynamicGraphSchemaManager + Send + Sync> {
31        self.dynamic_graph_schema_manager.clone()
32    }
33
34    fn type_system(&self) -> Arc<dyn TypeSystem + Send + Sync> {
35        self.type_system.clone()
36    }
37
38    fn reactive_system(&self) -> Arc<dyn ReactiveSystem + Send + Sync> {
39        self.reactive_system.clone()
40    }
41}
42
43#[async_trait]
44impl Lifecycle for DynamicGraphSystemImpl {
45    async fn init(&self) {
46        self.dynamic_graph_schema_manager.init().await;
47        self.dynamic_graph_query_service.init().await;
48    }
49
50    async fn post_init(&self) {
51        self.dynamic_graph_schema_manager.post_init().await;
52        self.dynamic_graph_query_service.post_init().await;
53    }
54
55    async fn pre_shutdown(&self) {
56        self.dynamic_graph_query_service.pre_shutdown().await;
57        self.dynamic_graph_schema_manager.pre_shutdown().await;
58    }
59
60    async fn shutdown(&self) {
61        self.dynamic_graph_query_service.shutdown().await;
62        self.dynamic_graph_schema_manager.shutdown().await;
63    }
64}