reactive_graph_runtime_graphql_impl/
runtime_schema_manager_impl.rs

1use 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_command_api::CommandManager;
10use reactive_graph_lifecycle::Lifecycle;
11use reactive_graph_remotes_api::InstanceService;
12use reactive_graph_remotes_api::RemotesManager;
13use reactive_graph_runtime_graphql_api::RuntimeSchemaManager;
14use reactive_graph_runtime_graphql_schema::RuntimeSchema;
15use reactive_graph_runtime_graphql_schema::mutation::RuntimeMutation;
16use reactive_graph_runtime_graphql_schema::query::RuntimeQuery;
17use reactive_graph_runtime_service_api::ShutdownManager;
18
19#[derive(Component)]
20pub struct RuntimeSchemaManagerImpl {
21    instance_service: Arc<dyn InstanceService + Send + Sync>,
22
23    remotes_manager: Arc<dyn RemotesManager + Send + Sync>,
24
25    command_manager: Arc<dyn CommandManager + Send + Sync>,
26
27    shutdown_manager: Arc<dyn ShutdownManager + Send + Sync>,
28}
29
30impl RuntimeSchemaManagerImpl {}
31
32#[async_trait]
33#[component_alias]
34impl RuntimeSchemaManager for RuntimeSchemaManagerImpl {
35    fn get_schema(&self) -> RuntimeSchema {
36        Schema::build(RuntimeQuery, RuntimeMutation, EmptySubscription)
37            .with_sorted_fields()
38            .with_sorted_enums()
39            .data(self.instance_service.clone())
40            .data(self.remotes_manager.clone())
41            .data(self.command_manager.clone())
42            .data(self.shutdown_manager.clone())
43            .finish()
44    }
45}
46
47#[async_trait]
48impl Lifecycle for RuntimeSchemaManagerImpl {}