use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};
use super::types::*;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ActivityCreatedEvent {
pub id: ActivityId,
pub data: ActivityDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ActivityUpdatedEvent {
pub id: ActivityId,
pub data: ActivityDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ActivityDeletedEvent {
pub id: ActivityId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ActivityEvent {
ActivityCreated(ActivityCreatedEvent),
ActivityUpdated(ActivityUpdatedEvent),
ActivityDeleted(ActivityDeletedEvent),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ActivityEventMetadata {
pub module: &'static str,
pub version: &'static str,
}
impl Default for ActivityEventMetadata {
fn default() -> Self {
Self {
module: "activity",
version: "1.0",
}
}
}