reactive_graph_plugin_graphql_impl/
plugin_graphql_system_impl.rs1use 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_plugin_graphql_api::PluginGraphQLSystem;
9use reactive_graph_plugin_graphql_api::PluginQueryService;
10use reactive_graph_plugin_graphql_api::PluginSchemaManager;
11
12#[derive(Component)]
13pub struct PluginGraphQLSystemImpl {
14 plugin_query_service: Arc<dyn PluginQueryService + Send + Sync>,
15 plugin_schema_manager: Arc<dyn PluginSchemaManager + Send + Sync>,
16}
17
18#[async_trait]
19#[component_alias]
20impl PluginGraphQLSystem for PluginGraphQLSystemImpl {
21 fn get_plugin_query_service(&self) -> Arc<dyn PluginQueryService + Send + Sync> {
22 self.plugin_query_service.clone()
23 }
24
25 fn get_plugin_schema_manager(&self) -> Arc<dyn PluginSchemaManager + Send + Sync> {
26 self.plugin_schema_manager.clone()
27 }
28}
29
30#[async_trait]
31impl Lifecycle for PluginGraphQLSystemImpl {
32 async fn init(&self) {
33 self.plugin_schema_manager.init().await;
34 self.plugin_query_service.init().await;
35 }
36
37 async fn post_init(&self) {
38 self.plugin_schema_manager.post_init().await;
39 self.plugin_query_service.post_init().await;
40 }
41
42 async fn pre_shutdown(&self) {
43 self.plugin_query_service.pre_shutdown().await;
44 self.plugin_schema_manager.pre_shutdown().await;
45 }
46
47 async fn shutdown(&self) {
48 self.plugin_query_service.shutdown().await;
49 self.plugin_schema_manager.shutdown().await;
50 }
51}