myc_core/domain/entities/message/
message_write.rs

1use 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}