reactive_graph_plugin_delegates/
component_manager_impl.rs1use 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}