reactive_graph_plugin_service_impl/
context.rs

1use std::sync::Arc;
2
3use reactive_graph_plugin_api::CommandManager;
4use reactive_graph_plugin_api::ComponentImportExportManager;
5use reactive_graph_plugin_api::ComponentManager;
6use reactive_graph_plugin_api::ComponentProviderRegistry;
7use reactive_graph_plugin_api::ConfigManager;
8use reactive_graph_plugin_api::EntityBehaviourRegistry;
9use reactive_graph_plugin_api::EntityComponentBehaviourRegistry;
10use reactive_graph_plugin_api::EntityInstanceManager;
11use reactive_graph_plugin_api::EntityTypeImportExportManager;
12use reactive_graph_plugin_api::EntityTypeManager;
13use reactive_graph_plugin_api::EntityTypeProviderRegistry;
14use reactive_graph_plugin_api::FlowInstanceManager;
15use reactive_graph_plugin_api::FlowTypeImportExportManager;
16use reactive_graph_plugin_api::FlowTypeManager;
17use reactive_graph_plugin_api::FlowTypeProviderRegistry;
18use reactive_graph_plugin_api::GraphQLQueryService;
19use reactive_graph_plugin_api::PluginContext;
20use reactive_graph_plugin_api::RelationBehaviourRegistry;
21use reactive_graph_plugin_api::RelationComponentBehaviourRegistry;
22use reactive_graph_plugin_api::RelationInstanceManager;
23use reactive_graph_plugin_api::RelationTypeImportExportManager;
24use reactive_graph_plugin_api::RelationTypeManager;
25use reactive_graph_plugin_api::RelationTypeProviderRegistry;
26use reactive_graph_plugin_api::TypeSystemEventManager;
27use reactive_graph_plugin_api::WebResourceManager;
28
29#[derive(Clone)]
30pub struct PluginContextImpl {
31    component_manager: Arc<dyn ComponentManager + Send + Sync>,
32    component_import_export_manager: Arc<dyn ComponentImportExportManager + Send + Sync>,
33    component_provider_registry: Arc<dyn ComponentProviderRegistry + Send + Sync>,
34    entity_type_manager: Arc<dyn EntityTypeManager + Send + Sync>,
35    entity_type_import_export_manager: Arc<dyn EntityTypeImportExportManager + Send + Sync>,
36    entity_type_provider_registry: Arc<dyn EntityTypeProviderRegistry + Send + Sync>,
37    relation_type_manager: Arc<dyn RelationTypeManager + Send + Sync>,
38    relation_type_import_export_manager: Arc<dyn RelationTypeImportExportManager + Send + Sync>,
39    relation_type_provider_registry: Arc<dyn RelationTypeProviderRegistry + Send + Sync>,
40    flow_type_manager: Arc<dyn FlowTypeManager + Send + Sync>,
41    flow_type_import_export_manager: Arc<dyn FlowTypeImportExportManager + Send + Sync>,
42    flow_type_provider_registry: Arc<dyn FlowTypeProviderRegistry + Send + Sync>,
43    type_system_event_manager: Arc<dyn TypeSystemEventManager + Send + Sync>,
44    entity_instance_manager: Arc<dyn EntityInstanceManager + Send + Sync>,
45    relation_instance_manager: Arc<dyn RelationInstanceManager + Send + Sync>,
46    flow_instance_manager: Arc<dyn FlowInstanceManager + Send + Sync>,
47    entity_behaviour_registry: Arc<dyn EntityBehaviourRegistry + Send + Sync>,
48    entity_component_behaviour_registry: Arc<dyn EntityComponentBehaviourRegistry + Send + Sync>,
49    relation_behaviour_registry: Arc<dyn RelationBehaviourRegistry + Send + Sync>,
50    relation_component_behaviour_registry: Arc<dyn RelationComponentBehaviourRegistry + Send + Sync>,
51    config_manager: Arc<dyn ConfigManager + Send + Sync>,
52    graphql_query_service: Arc<dyn GraphQLQueryService + Send + Sync>,
53    web_resource_manager: Arc<dyn WebResourceManager + Send + Sync>,
54    command_manager: Arc<dyn CommandManager + Send + Sync>,
55}
56
57impl PluginContextImpl {
58    #[allow(clippy::too_many_arguments)]
59    pub fn new(
60        component_manager: Arc<dyn ComponentManager + Send + Sync>,
61        component_import_export_manager: Arc<dyn ComponentImportExportManager + Send + Sync>,
62        component_provider_registry: Arc<dyn ComponentProviderRegistry + Send + Sync>,
63        entity_type_manager: Arc<dyn EntityTypeManager + Send + Sync>,
64        entity_type_import_export_manager: Arc<dyn EntityTypeImportExportManager + Send + Sync>,
65        entity_type_provider_registry: Arc<dyn EntityTypeProviderRegistry + Send + Sync>,
66        relation_type_manager: Arc<dyn RelationTypeManager + Send + Sync>,
67        relation_type_import_export_manager: Arc<dyn RelationTypeImportExportManager + Send + Sync>,
68        relation_type_provider_registry: Arc<dyn RelationTypeProviderRegistry + Send + Sync>,
69        flow_type_manager: Arc<dyn FlowTypeManager + Send + Sync>,
70        flow_type_import_export_manager: Arc<dyn FlowTypeImportExportManager + Send + Sync>,
71        flow_type_provider_registry: Arc<dyn FlowTypeProviderRegistry + Send + Sync>,
72        type_system_event_manager: Arc<dyn TypeSystemEventManager + Send + Sync>,
73        entity_instance_manager: Arc<dyn EntityInstanceManager + Send + Sync>,
74        relation_instance_manager: Arc<dyn RelationInstanceManager + Send + Sync>,
75        flow_instance_manager: Arc<dyn FlowInstanceManager + Send + Sync>,
76        entity_behaviour_registry: Arc<dyn EntityBehaviourRegistry + Send + Sync>,
77        entity_component_behaviour_registry: Arc<dyn EntityComponentBehaviourRegistry + Send + Sync>,
78        relation_behaviour_registry: Arc<dyn RelationBehaviourRegistry + Send + Sync>,
79        relation_component_behaviour_registry: Arc<dyn RelationComponentBehaviourRegistry + Send + Sync>,
80        config_manager: Arc<dyn ConfigManager + Send + Sync>,
81        graphql_query_service: Arc<dyn GraphQLQueryService + Send + Sync>,
82        web_resource_manager: Arc<dyn WebResourceManager + Send + Sync>,
83        command_manager: Arc<dyn CommandManager + Send + Sync>,
84    ) -> Self {
85        PluginContextImpl {
86            component_manager,
87            component_import_export_manager,
88            component_provider_registry,
89            entity_type_manager,
90            entity_type_import_export_manager,
91            entity_type_provider_registry,
92            relation_type_manager,
93            relation_type_import_export_manager,
94            relation_type_provider_registry,
95            flow_type_manager,
96            flow_type_import_export_manager,
97            flow_type_provider_registry,
98            type_system_event_manager,
99            entity_instance_manager,
100            relation_instance_manager,
101            flow_instance_manager,
102            entity_behaviour_registry,
103            entity_component_behaviour_registry,
104            relation_behaviour_registry,
105            relation_component_behaviour_registry,
106            config_manager,
107            graphql_query_service,
108            web_resource_manager,
109            command_manager,
110        }
111    }
112}
113
114impl PluginContext for PluginContextImpl {
115    fn get_component_manager(&self) -> Arc<dyn ComponentManager + Send + Sync> {
116        self.component_manager.clone()
117    }
118
119    fn get_component_import_export_manager(&self) -> Arc<dyn ComponentImportExportManager + Send + Sync> {
120        self.component_import_export_manager.clone()
121    }
122
123    fn get_component_provider_registry(&self) -> Arc<dyn ComponentProviderRegistry + Send + Sync> {
124        self.component_provider_registry.clone()
125    }
126
127    fn get_entity_type_manager(&self) -> Arc<dyn EntityTypeManager + Send + Sync> {
128        self.entity_type_manager.clone()
129    }
130
131    fn get_entity_type_import_export_manager(&self) -> Arc<dyn EntityTypeImportExportManager + Send + Sync> {
132        self.entity_type_import_export_manager.clone()
133    }
134
135    fn get_entity_type_provider_registry(&self) -> Arc<dyn EntityTypeProviderRegistry + Send + Sync> {
136        self.entity_type_provider_registry.clone()
137    }
138
139    fn get_relation_type_manager(&self) -> Arc<dyn RelationTypeManager + Send + Sync> {
140        self.relation_type_manager.clone()
141    }
142
143    fn get_relation_type_import_export_manager(&self) -> Arc<dyn RelationTypeImportExportManager + Send + Sync> {
144        self.relation_type_import_export_manager.clone()
145    }
146
147    fn get_relation_type_provider_registry(&self) -> Arc<dyn RelationTypeProviderRegistry + Send + Sync> {
148        self.relation_type_provider_registry.clone()
149    }
150
151    fn get_flow_type_manager(&self) -> Arc<dyn FlowTypeManager + Send + Sync> {
152        self.flow_type_manager.clone()
153    }
154
155    fn get_flow_type_import_export_manager(&self) -> Arc<dyn FlowTypeImportExportManager + Send + Sync> {
156        self.flow_type_import_export_manager.clone()
157    }
158
159    fn get_flow_type_provider_registry(&self) -> Arc<dyn FlowTypeProviderRegistry + Send + Sync> {
160        self.flow_type_provider_registry.clone()
161    }
162
163    fn get_type_system_event_manager(&self) -> Arc<dyn TypeSystemEventManager + Send + Sync> {
164        self.type_system_event_manager.clone()
165    }
166
167    fn get_entity_instance_manager(&self) -> Arc<dyn EntityInstanceManager + Send + Sync> {
168        self.entity_instance_manager.clone()
169    }
170
171    fn get_relation_instance_manager(&self) -> Arc<dyn RelationInstanceManager + Send + Sync> {
172        self.relation_instance_manager.clone()
173    }
174
175    fn get_flow_instance_manager(&self) -> Arc<dyn FlowInstanceManager + Send + Sync> {
176        self.flow_instance_manager.clone()
177    }
178
179    fn get_entity_behaviour_registry(&self) -> Arc<dyn EntityBehaviourRegistry + Send + Sync> {
180        self.entity_behaviour_registry.clone()
181    }
182
183    fn get_entity_component_behaviour_registry(&self) -> Arc<dyn EntityComponentBehaviourRegistry + Send + Sync> {
184        self.entity_component_behaviour_registry.clone()
185    }
186
187    fn get_relation_behaviour_registry(&self) -> Arc<dyn RelationBehaviourRegistry + Send + Sync> {
188        self.relation_behaviour_registry.clone()
189    }
190
191    fn get_relation_component_behaviour_registry(&self) -> Arc<dyn RelationComponentBehaviourRegistry + Send + Sync> {
192        self.relation_component_behaviour_registry.clone()
193    }
194
195    fn get_graphql_query_service(&self) -> Arc<dyn GraphQLQueryService + Send + Sync> {
196        self.graphql_query_service.clone()
197    }
198
199    fn get_web_resource_manager(&self) -> Arc<dyn WebResourceManager + Send + Sync> {
200        self.web_resource_manager.clone()
201    }
202
203    fn get_config_manager(&self) -> Arc<dyn ConfigManager + Send + Sync> {
204        self.config_manager.clone()
205    }
206
207    fn get_command_manager(&self) -> Arc<dyn CommandManager + Send + Sync> {
208        self.command_manager.clone()
209    }
210}