reactive_graph_runtime_graphql_impl/
runtime_graphql_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_lifecycle::Lifecycle;
8use reactive_graph_runtime_graphql_api::RuntimeGraphQLSystem;
9use reactive_graph_runtime_graphql_api::RuntimeQueryService;
10use reactive_graph_runtime_graphql_api::RuntimeSchemaManager;
11
12#[derive(Component)]
13pub struct RuntimeGraphQLSystemImpl {
14    runtime_query_service: Arc<dyn RuntimeQueryService + Send + Sync>,
15    runtime_schema_manager: Arc<dyn RuntimeSchemaManager + Send + Sync>,
16}
17
18#[async_trait]
19#[component_alias]
20impl RuntimeGraphQLSystem for RuntimeGraphQLSystemImpl {
21    fn get_runtime_query_service(&self) -> Arc<dyn RuntimeQueryService + Send + Sync> {
22        self.runtime_query_service.clone()
23    }
24
25    fn get_runtime_schema_manager(&self) -> Arc<dyn RuntimeSchemaManager + Send + Sync> {
26        self.runtime_schema_manager.clone()
27    }
28}
29
30#[async_trait]
31impl Lifecycle for RuntimeGraphQLSystemImpl {
32    async fn init(&self) {
33        self.runtime_schema_manager.init().await;
34        self.runtime_query_service.init().await;
35    }
36
37    async fn post_init(&self) {
38        self.runtime_schema_manager.post_init().await;
39        self.runtime_query_service.post_init().await;
40    }
41
42    async fn pre_shutdown(&self) {
43        self.runtime_query_service.pre_shutdown().await;
44        self.runtime_schema_manager.pre_shutdown().await;
45    }
46
47    async fn shutdown(&self) {
48        self.runtime_query_service.shutdown().await;
49        self.runtime_schema_manager.shutdown().await;
50    }
51}