28 lines
1.1 KiB
Rust
28 lines
1.1 KiB
Rust
use domain::events::DomainEvent;
|
|
|
|
pub fn event_to_subject(prefix: &str, event: &DomainEvent) -> String {
|
|
let suffix = match event {
|
|
DomainEvent::ReviewLogged { .. } => "review.logged",
|
|
DomainEvent::ReviewUpdated { .. } => "review.updated",
|
|
DomainEvent::ReviewDeleted { .. } => "review.deleted",
|
|
DomainEvent::MovieDiscovered { .. } => "movie.discovered",
|
|
DomainEvent::MovieDeleted { .. } => "movie.deleted",
|
|
DomainEvent::UserUpdated { .. } => "user.updated",
|
|
DomainEvent::MovieEnrichmentRequested { .. } => "movie.enrichment.requested",
|
|
DomainEvent::ImageStored { .. } => "image.stored",
|
|
DomainEvent::WatchlistEntryAdded { .. } | DomainEvent::WatchlistEntryRemoved { .. } => {
|
|
unreachable!("watchlist events are not published to NATS")
|
|
}
|
|
DomainEvent::FollowAccepted { .. } => "follow.accepted",
|
|
};
|
|
format!("{prefix}.{suffix}")
|
|
}
|
|
|
|
pub fn consumer_subject_filter(prefix: &str) -> String {
|
|
format!("{prefix}.>")
|
|
}
|
|
|
|
#[cfg(test)]
|
|
#[path = "tests/subject.rs"]
|
|
mod tests;
|