feat(domain): ports, events, test helpers
This commit is contained in:
@@ -1 +1,28 @@
|
||||
// filled in Task 4
|
||||
use crate::value_objects::{UserId, ThoughtId, LikeId, BoostId};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum DomainEvent {
|
||||
ThoughtCreated { thought_id: ThoughtId, user_id: UserId, in_reply_to_id: Option<ThoughtId> },
|
||||
ThoughtDeleted { thought_id: ThoughtId, user_id: UserId },
|
||||
ThoughtUpdated { thought_id: ThoughtId, user_id: UserId },
|
||||
LikeAdded { like_id: LikeId, user_id: UserId, thought_id: ThoughtId },
|
||||
LikeRemoved { user_id: UserId, thought_id: ThoughtId },
|
||||
BoostAdded { boost_id: BoostId, user_id: UserId, thought_id: ThoughtId },
|
||||
BoostRemoved { user_id: UserId, thought_id: ThoughtId },
|
||||
FollowRequested { follower_id: UserId, following_id: UserId },
|
||||
FollowAccepted { follower_id: UserId, following_id: UserId },
|
||||
FollowRejected { follower_id: UserId, following_id: UserId },
|
||||
Unfollowed { follower_id: UserId, following_id: UserId },
|
||||
UserBlocked { blocker_id: UserId, blocked_id: UserId },
|
||||
}
|
||||
|
||||
pub struct EventEnvelope {
|
||||
pub event: DomainEvent,
|
||||
pub ack: Box<dyn Fn() + Send + Sync>,
|
||||
pub nack: Box<dyn Fn() + Send + Sync>,
|
||||
}
|
||||
impl std::fmt::Debug for EventEnvelope {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
f.debug_struct("EventEnvelope").field("event", &self.event).finish()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user