reactive_graph_plugin_delegates/
component_manager_impl.rs

1use reactive_graph_type_system_api::ComponentCreationError;
2use std::sync::Arc;
3
4use reactive_graph_graph::Component;
5use reactive_graph_graph::ComponentAddExtensionError;
6use reactive_graph_graph::ComponentAddPropertyError;
7use reactive_graph_graph::ComponentRemoveExtensionError;
8use reactive_graph_graph::ComponentRemovePropertyError;
9use reactive_graph_graph::ComponentTypeId;
10use reactive_graph_graph::ComponentUpdateError;
11use reactive_graph_graph::ComponentUpdateExtensionError;
12use reactive_graph_graph::ComponentUpdatePropertyError;
13use reactive_graph_graph::Components;
14use reactive_graph_graph::Extension;
15use reactive_graph_graph::ExtensionTypeId;
16use reactive_graph_graph::Extensions;
17use reactive_graph_graph::PropertyType;
18use reactive_graph_graph::PropertyTypes;
19
20pub struct ComponentManagerDelegate {
21    component_manager: Arc<dyn reactive_graph_type_system_api::ComponentManager + Send + Sync>,
22}
23
24impl ComponentManagerDelegate {
25    pub fn new(component_manager: Arc<dyn reactive_graph_type_system_api::ComponentManager + Send + Sync>) -> Self {
26        Self { component_manager }
27    }
28}
29impl reactive_graph_plugin_api::ComponentManager for ComponentManagerDelegate {
30    fn get_all(&self) -> Components {
31        self.component_manager.get_all()
32    }
33
34    fn get_by_namespace(&self, namespace: &str) -> Components {
35        self.component_manager.get_by_namespace(namespace)
36    }
37
38    fn has(&self, ty: &ComponentTypeId) -> bool {
39        self.component_manager.has(ty)
40    }
41
42    fn has_by_type(&self, namespace: &str, type_name: &str) -> bool {
43        self.component_manager.has_by_type(namespace, type_name)
44    }
45
46    fn get(&self, ty: &ComponentTypeId) -> Option<Component> {
47        self.component_manager.get(ty)
48    }
49
50    fn get_by_type(&self, namespace: &str, type_name: &str) -> Option<Component> {
51        self.component_manager.get_by_type(namespace, type_name)
52    }
53
54    fn find_by_type_name(&self, search: &str) -> Components {
55        self.component_manager.find_by_type_name(search)
56    }
57
58    fn count(&self) -> usize {
59        self.component_manager.count()
60    }
61
62    fn count_by_namespace(&self, namespace: &str) -> usize {
63        self.component_manager.count_by_namespace(namespace)
64    }
65
66    fn create(&self, ty: &ComponentTypeId, description: &str, properties: PropertyTypes, extensions: Extensions) -> Result<Component, ComponentCreationError> {
67        self.component_manager.create_component(ty, description, properties, extensions)
68    }
69
70    fn replace(&self, ty: &ComponentTypeId, component: Component) {
71        self.component_manager.replace(ty, component)
72    }
73
74    fn update_description(&self, ty: &ComponentTypeId, description: &str) -> Result<Component, ComponentUpdateError> {
75        self.component_manager.update_description(ty, description)
76    }
77
78    fn add_property(&self, ty: &ComponentTypeId, property: PropertyType) -> Result<PropertyType, ComponentAddPropertyError> {
79        self.component_manager.add_property(ty, property)
80    }
81
82    fn update_property(&self, ty: &ComponentTypeId, property_name: &str, property: PropertyType) -> Result<PropertyType, ComponentUpdatePropertyError> {
83        self.component_manager.update_property(ty, property_name, property)
84    }
85
86    fn remove_property(&self, ty: &ComponentTypeId, property_name: &str) -> Result<PropertyType, ComponentRemovePropertyError> {
87        self.component_manager.remove_property(ty, property_name)
88    }
89
90    fn add_extension(&self, ty: &ComponentTypeId, extension: Extension) -> Result<ExtensionTypeId, ComponentAddExtensionError> {
91        self.component_manager.add_extension(ty, extension)
92    }
93
94    fn update_extension(
95        &self,
96        component_ty: &ComponentTypeId,
97        extension_ty: &ExtensionTypeId,
98        extension: Extension,
99    ) -> Result<Extension, ComponentUpdateExtensionError> {
100        self.component_manager.update_extension(component_ty, extension_ty, extension)
101    }
102
103    fn remove_extension(&self, component_ty: &ComponentTypeId, extension_ty: &ExtensionTypeId) -> Result<Extension, ComponentRemoveExtensionError> {
104        self.component_manager.remove_extension(component_ty, extension_ty)
105    }
106
107    fn delete(&self, ty: &ComponentTypeId) -> bool {
108        self.component_manager.delete(ty)
109    }
110}