reactive_graph_dynamic_graph_impl/extension/
field_description.rs

1use serde::Deserialize;
2use serde::Serialize;
3use serde_json::from_value;
4
5use reactive_graph_dynamic_graph_model::EXTENSION_FIELD_DESCRIPTION;
6use reactive_graph_graph::Extension;
7use reactive_graph_graph::ExtensionContainer;
8
9#[derive(Serialize, Deserialize, Clone, Debug, Default)]
10pub struct DynamicGraphFieldDescriptionExtension {
11    #[serde(default)]
12    pub from_outbound_entity_to_relation: Option<String>,
13
14    #[serde(default)]
15    pub from_relation_to_outbound_entity: Option<String>,
16
17    #[serde(default)]
18    pub from_inbound_entity_to_relation: Option<String>,
19
20    #[serde(default)]
21    pub from_relation_to_inbound_entity: Option<String>,
22
23    #[serde(default)]
24    pub from_outbound_entity_to_inbound_entity: Option<String>,
25
26    #[serde(default)]
27    pub from_inbound_entity_to_outbound_entity: Option<String>,
28}
29
30impl From<Extension> for DynamicGraphFieldDescriptionExtension {
31    fn from(extension: Extension) -> Self {
32        from_value(extension.extension).unwrap_or_default()
33    }
34}
35
36pub fn get_dynamic_graph_field_descriptions(extension_container: &impl ExtensionContainer) -> DynamicGraphFieldDescriptionExtension {
37    match extension_container.get_own_extension(&EXTENSION_FIELD_DESCRIPTION.clone()) {
38        Some(field_descriptions) => field_descriptions.into(),
39        None => Default::default(),
40    }
41}