reactive_graph_runtime_web_api/
web_system.rs

1use std::sync::Arc;
2
3use async_trait::async_trait;
4use springtime_di::injectable;
5
6use reactive_graph_config_api::ConfigSystem;
7use reactive_graph_dynamic_graph_api::DynamicGraphSystem;
8use reactive_graph_graphql_api::GraphQLSystem;
9use reactive_graph_lifecycle::Lifecycle;
10use reactive_graph_plugin_graphql_api::PluginGraphQLSystem;
11use reactive_graph_reactive_service_api::ReactiveSystem;
12use reactive_graph_runtime_graphql_api::RuntimeGraphQLSystem;
13use reactive_graph_type_system_api::TypeSystem;
14
15use crate::GraphQLServer;
16use crate::WebResourceManager;
17
18#[injectable]
19#[async_trait]
20pub trait WebSystem: Lifecycle {
21    fn get_graphql_server(&self) -> Arc<dyn GraphQLServer + Send + Sync>;
22
23    fn get_web_resource_manager(&self) -> Arc<dyn WebResourceManager + Send + Sync>;
24
25    fn type_system(&self) -> Arc<dyn TypeSystem + Send + Sync>;
26
27    fn reactive_system(&self) -> Arc<dyn ReactiveSystem + Send + Sync>;
28
29    fn config_system(&self) -> Arc<dyn ConfigSystem + Send + Sync>;
30
31    fn runtime_graphql_system(&self) -> Arc<dyn RuntimeGraphQLSystem + Send + Sync>;
32
33    fn plugin_graphql_system(&self) -> Arc<dyn PluginGraphQLSystem + Send + Sync>;
34
35    fn dynamic_graph_system(&self) -> Arc<dyn DynamicGraphSystem + Send + Sync>;
36
37    fn graphql_system(&self) -> Arc<dyn GraphQLSystem + Send + Sync>;
38}