use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};
use super::types::*;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingAbTestCreatedEvent {
pub id: MailingAbTestId,
pub data: MailingAbTestDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingAbTestUpdatedEvent {
pub id: MailingAbTestId,
pub data: MailingAbTestDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingAbTestDeletedEvent {
pub id: MailingAbTestId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingAudienceCreatedEvent {
pub id: MailingAudienceId,
pub data: MailingAudienceDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingAudienceUpdatedEvent {
pub id: MailingAudienceId,
pub data: MailingAudienceDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingAudienceDeletedEvent {
pub id: MailingAudienceId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingContactCreatedEvent {
pub id: MailingContactId,
pub data: MailingContactDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingContactUpdatedEvent {
pub id: MailingContactId,
pub data: MailingContactDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingContactDeletedEvent {
pub id: MailingContactId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingSubscriptionCreatedEvent {
pub id: MailingSubscriptionId,
pub data: MailingSubscriptionDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingSubscriptionUpdatedEvent {
pub id: MailingSubscriptionId,
pub data: MailingSubscriptionDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingSubscriptionDeletedEvent {
pub id: MailingSubscriptionId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OptOutReasonCreatedEvent {
pub id: OptOutReasonId,
pub data: OptOutReasonDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OptOutReasonUpdatedEvent {
pub id: OptOutReasonId,
pub data: OptOutReasonDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OptOutReasonDeletedEvent {
pub id: OptOutReasonId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingCreatedEvent {
pub id: MailingId,
pub data: MailingDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingUpdatedEvent {
pub id: MailingId,
pub data: MailingDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingDeletedEvent {
pub id: MailingId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingTraceCreatedEvent {
pub id: MailingTraceId,
pub data: MailingTraceDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingTraceUpdatedEvent {
pub id: MailingTraceId,
pub data: MailingTraceDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingTraceDeletedEvent {
pub id: MailingTraceId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingFilterCreatedEvent {
pub id: MailingFilterId,
pub data: MailingFilterDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingFilterUpdatedEvent {
pub id: MailingFilterId,
pub data: MailingFilterDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingFilterDeletedEvent {
pub id: MailingFilterId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum MailingEvent {
MailingAbTestCreated(MailingAbTestCreatedEvent),
MailingAbTestUpdated(MailingAbTestUpdatedEvent),
MailingAbTestDeleted(MailingAbTestDeletedEvent),
MailingAudienceCreated(MailingAudienceCreatedEvent),
MailingAudienceUpdated(MailingAudienceUpdatedEvent),
MailingAudienceDeleted(MailingAudienceDeletedEvent),
MailingContactCreated(MailingContactCreatedEvent),
MailingContactUpdated(MailingContactUpdatedEvent),
MailingContactDeleted(MailingContactDeletedEvent),
MailingSubscriptionCreated(MailingSubscriptionCreatedEvent),
MailingSubscriptionUpdated(MailingSubscriptionUpdatedEvent),
MailingSubscriptionDeleted(MailingSubscriptionDeletedEvent),
OptOutReasonCreated(OptOutReasonCreatedEvent),
OptOutReasonUpdated(OptOutReasonUpdatedEvent),
OptOutReasonDeleted(OptOutReasonDeletedEvent),
MailingCreated(MailingCreatedEvent),
MailingUpdated(MailingUpdatedEvent),
MailingDeleted(MailingDeletedEvent),
MailingTraceCreated(MailingTraceCreatedEvent),
MailingTraceUpdated(MailingTraceUpdatedEvent),
MailingTraceDeleted(MailingTraceDeletedEvent),
MailingFilterCreated(MailingFilterCreatedEvent),
MailingFilterUpdated(MailingFilterUpdatedEvent),
MailingFilterDeleted(MailingFilterDeletedEvent),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MailingEventMetadata {
pub module: &'static str,
pub version: &'static str,
}
impl Default for MailingEventMetadata {
fn default() -> Self {
Self {
module: "mailing",
version: "1.0",
}
}
}