reactive_graph_graph/instances/entities/
entity_instance_container.rs1use uuid::Uuid;
2
3use crate::AddEntityInstanceError;
4use crate::EntityInstance;
5use crate::EntityInstances;
6use crate::RemoveEntityInstanceError;
7use crate::UpdateEntityInstanceError;
8
9pub trait EntityInstanceContainer {
11 fn entity_instances(&self) -> EntityInstances;
13
14 fn has_entity_instance(&self, id: Uuid) -> bool;
22
23 fn add_entity_instance(&self, entity_instance: EntityInstance) -> Result<(), AddEntityInstanceError>;
25
26 fn update_entity_instance(&self, id: Uuid, entity_instance: EntityInstance) -> Result<(Uuid, EntityInstance), UpdateEntityInstanceError>;
28
29 fn remove_entity_instance(&self, id: Uuid) -> Result<Option<(Uuid, EntityInstance)>, RemoveEntityInstanceError>;
31
32 }
35
36pub trait NamespacedTypeEntityInstanceContainer<
41 T,
42 NamespacedTypeDoesNotExistError,
43 AddEntityInstanceError,
44 UpdateEntityInstanceError,
45 RemoveEntityInstanceError,
46>
47{
48 fn entity_instances(&self, ty: &T) -> Result<EntityInstances, NamespacedTypeDoesNotExistError>;
50
51 fn has_entity_instance(&self, ty: &T, id: Uuid) -> Result<bool, NamespacedTypeDoesNotExistError>;
59
60 fn add_entity_instance(&self, ty: &T, entity_instance: EntityInstance) -> Result<(), AddEntityInstanceError>;
62
63 fn update_entity_instance(&self, ty: &T, id: Uuid, entity_instance: EntityInstance) -> Result<(Uuid, EntityInstance), UpdateEntityInstanceError>;
65
66 fn remove_entity_instance(&self, ty: &T, id: Uuid) -> Result<Option<(Uuid, EntityInstance)>, RemoveEntityInstanceError>;
68}