reactive_graph_graph/instances/relations/
relation_instance_container.rs1use uuid::Uuid;
2
3use crate::AddRelationInstanceError;
4use crate::RelationInstance;
5use crate::RelationInstanceId;
6use crate::RelationInstances;
7use crate::RemoveRelationInstanceError;
8use crate::UpdateRelationInstanceError;
9
10pub trait RelationInstanceContainer {
12 fn relation_instances(&self) -> RelationInstances;
14
15 fn has_relation_which_uses_entity_instance(&self, id: Uuid) -> bool;
17
18 fn has_relation_instance(&self, id: &RelationInstanceId) -> bool;
20
21 fn add_relation_instance(&self, relation_instance: RelationInstance) -> Result<(), AddRelationInstanceError>;
23
24 fn update_relation_instance(
26 &self,
27 id: &RelationInstanceId,
28 relation_instance: RelationInstance,
29 ) -> Result<(RelationInstanceId, RelationInstance), UpdateRelationInstanceError>;
30
31 fn remove_relation_instance(&self, id: &RelationInstanceId) -> Result<Option<(RelationInstanceId, RelationInstance)>, RemoveRelationInstanceError>;
33}
34
35pub trait NamespacedTypeRelationInstanceContainer<
40 T,
41 NamespacedTypeDoesNotExistError,
42 AddRelationInstanceError,
43 UpdateRelationInstanceError,
44 RemoveRelationInstanceError,
45>
46{
47 fn relation_instances(&self, ty: &T) -> Result<RelationInstances, NamespacedTypeDoesNotExistError>;
49
50 fn has_relation_which_uses_entity_instance(&self, ty: &T, id: Uuid) -> Result<bool, NamespacedTypeDoesNotExistError>;
52
53 fn has_relation_instance(&self, ty: &T, id: &RelationInstanceId) -> Result<bool, NamespacedTypeDoesNotExistError>;
55
56 fn add_relation_instance(&self, ty: &T, relation_instance: RelationInstance) -> Result<(), AddRelationInstanceError>;
58
59 fn update_relation_instance(
61 &self,
62 ty: &T,
63 id: &RelationInstanceId,
64 relation_instance: RelationInstance,
65 ) -> Result<(RelationInstanceId, RelationInstance), UpdateRelationInstanceError>;
66
67 fn remove_relation_instance(&self, ty: &T, id: &RelationInstanceId) -> Result<Option<(RelationInstanceId, RelationInstance)>, RemoveRelationInstanceError>;
69}