reactive_graph_client/schema_graphql/instances/entity_instance/
entity_instance_definition.rs1use crate::ExtensionDefinition;
2use crate::PropertyInstanceDefinition;
3use crate::schema_graphql::scalar::UUID;
4use reactive_graph_graph::EntityInstance;
5use reactive_graph_graph::EntityInstances;
6use reactive_graph_graph::NamespacedTypeGetter;
7use typed_builder::TypedBuilder;
8
9#[derive(cynic::InputObject, Debug, TypedBuilder)]
10#[cynic(
11 schema_path = "../../schema/graphql/reactive-graph-schema.graphql",
12 schema_module = "crate::schema_graphql::schema"
13)]
14pub struct EntityInstanceDefinition {
15 pub namespace: String,
16 pub type_name: String,
17 pub id: UUID,
18 pub description: String,
19 pub properties: Vec<PropertyInstanceDefinition>,
20 pub extensions: Vec<ExtensionDefinition>,
21}
22
23impl From<EntityInstance> for EntityInstanceDefinition {
24 fn from(entity_instance: EntityInstance) -> Self {
25 let ty = entity_instance.ty.clone();
26 let properties = entity_instance
27 .properties
28 .into_iter()
29 .map(|(name, value)| PropertyInstanceDefinition { name, value })
30 .collect();
31 let extensions = entity_instance.extensions.into_iter().map(|(_, extension)| extension.into()).collect();
32 EntityInstanceDefinition {
33 namespace: ty.namespace(),
34 type_name: ty.type_name(),
35 id: UUID(entity_instance.id),
36 description: entity_instance.description.clone(),
37 properties,
38 extensions,
39 }
40 }
41}
42
43pub struct EntityInstanceDefinitions(pub Vec<EntityInstanceDefinition>);
44
45impl EntityInstanceDefinitions {
46 pub fn new() -> Self {
47 Self(Vec::new())
48 }
49}
50
51impl From<EntityInstanceDefinitions> for Vec<EntityInstanceDefinition> {
52 fn from(entity_instances: EntityInstanceDefinitions) -> Self {
53 entity_instances.0.into_iter().collect()
54 }
55}
56
57impl From<EntityInstances> for EntityInstanceDefinitions {
58 fn from(entity_instances: EntityInstances) -> Self {
59 EntityInstanceDefinitions(
60 entity_instances
61 .iter()
62 .map(|p| {
63 let entity_instance = p.value().clone();
64 entity_instance.into()
65 })
81 .collect(),
82 )
83 }
84}
85
86impl Default for EntityInstanceDefinitions {
87 fn default() -> Self {
88 Self::new()
89 }
90}