reactive_graph_plugin_graphql_impl/
plugin_schema_manager_impl.rs1use std::sync::Arc;
2
3use async_graphql::EmptySubscription;
4use async_graphql::Schema;
5use async_trait::async_trait;
6use springtime_di::Component;
7use springtime_di::component_alias;
8
9use reactive_graph_lifecycle::Lifecycle;
10use reactive_graph_plugin_graphql_api::PluginSchemaManager;
11use reactive_graph_plugin_graphql_schema::PluginSchema;
12use reactive_graph_plugin_graphql_schema::mutation::PluginMutation;
13use reactive_graph_plugin_graphql_schema::query::PluginQuery;
14use reactive_graph_plugin_service_api::PluginContainerManager;
15use reactive_graph_plugin_service_api::PluginResolver;
16
17#[derive(Component)]
18pub struct PluginSchemaManagerImpl {
19 plugin_container_manager: Arc<dyn PluginContainerManager + Send + Sync>,
20 plugin_resolver: Arc<dyn PluginResolver + Send + Sync>, }
22
23#[async_trait]
24#[component_alias]
25impl PluginSchemaManager for PluginSchemaManagerImpl {
26 fn get_schema(&self) -> PluginSchema {
27 Schema::build(PluginQuery, PluginMutation, EmptySubscription)
28 .with_sorted_fields()
29 .with_sorted_enums()
30 .data(self.plugin_container_manager.clone())
31 .data(self.plugin_resolver.clone())
32 .finish()
33 }
34}
35
36#[async_trait]
37impl Lifecycle for PluginSchemaManagerImpl {
38 async fn init(&self) {}
39
40 async fn post_init(&self) {}
41
42 async fn pre_shutdown(&self) {}
43
44 async fn shutdown(&self) {}
45}