myc_core/domain/entities/message/
message_write.rs1use crate::domain::dtos::message::{Message, MessageSendingEvent};
2
3use async_trait::async_trait;
4use mycelium_base::{
5 entities::CreateResponseKind, utils::errors::MappedErrors,
6};
7use shaku::Interface;
8use uuid::Uuid;
9
10#[async_trait]
11pub trait LocalMessageWrite: Interface + Send + Sync {
12 async fn send(
13 &self,
14 message_event: MessageSendingEvent,
15 ) -> Result<CreateResponseKind<Option<Uuid>>, MappedErrors>;
16
17 async fn update_message_event(
18 &self,
19 message_event: MessageSendingEvent,
20 ) -> Result<(), MappedErrors>;
21
22 async fn delete_message_event(&self, id: Uuid) -> Result<(), MappedErrors>;
23
24 async fn ping(&self) -> Result<(), MappedErrors>;
25}
26
27#[async_trait]
28pub trait RemoteMessageWrite: Interface + Send + Sync {
29 async fn send(
30 &self,
31 message: Message,
32 ) -> Result<CreateResponseKind<Option<Uuid>>, MappedErrors>;
33}