backbone-activity 0.4.0

Sales activity / touchpoints + rep tasks — the substrate lead/deal sit on
Documentation
//! Public events for Activity module
//!
//! Generated by metaphor-schema. Do not edit manually.
//!
//! These events are published by this module for other modules to subscribe to.
//! Events are the primary mechanism for cross-module communication.

use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};

use super::types::*;

// ============================================================================
// ACTIVITY EVENTS
// ============================================================================

/// Event published when a Activity is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ActivityCreatedEvent {
    pub id: ActivityId,
    pub data: ActivityDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a Activity is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ActivityUpdatedEvent {
    pub id: ActivityId,
    pub data: ActivityDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a Activity is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ActivityDeletedEvent {
    pub id: ActivityId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// MODULE EVENT ENUM
// ============================================================================

/// All events published by Activity module
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ActivityEvent {
    ActivityCreated(ActivityCreatedEvent),
    ActivityUpdated(ActivityUpdatedEvent),
    ActivityDeleted(ActivityDeletedEvent),
}

/// Metadata for module events
#[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",
        }
    }
}

// ============================================================================
// CUSTOM EVENTS
// ============================================================================

// Add custom public events here