reactive_graph_dynamic_graph_impl/extension/
field_name.rs1use serde::Deserialize;
2use serde::Serialize;
3use serde_json::from_value;
4
5use reactive_graph_dynamic_graph_model::EXTENSION_FIELD_NAME;
6use reactive_graph_graph::Extension;
7use reactive_graph_graph::ExtensionContainer;
8
9#[derive(Serialize, Deserialize, Clone, Debug, Default)]
10pub struct DynamicGraphFieldNameExtension {
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 DynamicGraphFieldNameExtension {
31 fn from(extension: Extension) -> Self {
32 from_value(extension.extension).unwrap_or_default()
33 }
34}
35
36pub fn get_dynamic_graph_field_names(extension_container: &impl ExtensionContainer) -> DynamicGraphFieldNameExtension {
37 match extension_container.get_own_extension(&EXTENSION_FIELD_NAME.clone()) {
38 Some(field_names) => field_names.into(),
39 None => Default::default(),
40 }
41}