reactive_graph_graphql_schema/mutation/instances/
relation_instance_id.rs1use std::fmt;
2
3use async_graphql::*;
4use uuid::Uuid;
5
6use reactive_graph_graph::RelationInstanceId;
7use reactive_graph_graph::RelationInstanceTypeId;
8use reactive_graph_graph::TYPE_ID_TYPE_SEPARATOR;
9
10#[derive(Debug, Clone, InputObject)]
13#[graphql(name = "RelationInstanceIdDefinition")]
14pub struct GraphQLRelationInstanceId {
15 pub outbound_id: Uuid,
17
18 pub namespace: String,
20
21 pub type_name: String,
23
24 #[graphql(default)]
26 pub instance_id: String,
27
28 pub inbound_id: Uuid,
30}
31
32impl GraphQLRelationInstanceId {
33 pub fn ty(&self) -> RelationInstanceTypeId {
34 RelationInstanceTypeId::new_from_type_unique_for_instance_id(&self.namespace, &self.type_name, &self.instance_id)
35 }
36}
37
38impl fmt::Display for GraphQLRelationInstanceId {
39 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
40 write!(
41 f,
42 "{}--{}{}{}{}{}--{}",
43 self.outbound_id, self.namespace, &TYPE_ID_TYPE_SEPARATOR, self.type_name, TYPE_ID_TYPE_SEPARATOR, self.instance_id, self.outbound_id
44 )
45 }
46}
47
48impl From<GraphQLRelationInstanceId> for RelationInstanceId {
49 fn from(relation_instance_id: GraphQLRelationInstanceId) -> Self {
50 RelationInstanceId::new(relation_instance_id.outbound_id, relation_instance_id.ty().clone(), relation_instance_id.inbound_id)
51 }
52}
53
54impl From<&GraphQLRelationInstanceId> for RelationInstanceId {
55 fn from(relation_instance_id: &GraphQLRelationInstanceId) -> Self {
56 RelationInstanceId::new(relation_instance_id.outbound_id, relation_instance_id.ty().clone(), relation_instance_id.inbound_id)
57 }
58}