backbone-digest 0.3.0

KPI digests — the periodic KPI-email engine: a declarative name-keyed KPI registry other modules extend, per-recipient fenced rendering with declared (never row-count) KPI drops, the anti-spam slowdown ladder, a shared tips carousel, and a daily plain-pull cron whose due-date column is the queue (Odoo digest port)
//! Public events for Digest 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::*;

// ============================================================================
// DIGESTDIGEST EVENTS
// ============================================================================

/// Event published when a DigestDigest is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DigestDigestCreatedEvent {
    pub id: DigestDigestId,
    pub data: DigestDigestDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a DigestDigest is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DigestDigestUpdatedEvent {
    pub id: DigestDigestId,
    pub data: DigestDigestDto,
    pub occurred_at: DateTime<Utc>,
}

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

// ============================================================================
// DIGESTSUBSCRIPTION EVENTS
// ============================================================================

/// Event published when a DigestSubscription is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DigestSubscriptionCreatedEvent {
    pub id: DigestSubscriptionId,
    pub data: DigestSubscriptionDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a DigestSubscription is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DigestSubscriptionUpdatedEvent {
    pub id: DigestSubscriptionId,
    pub data: DigestSubscriptionDto,
    pub occurred_at: DateTime<Utc>,
}

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

// ============================================================================
// DIGESTDIGESTKPI EVENTS
// ============================================================================

/// Event published when a DigestDigestKpi is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DigestDigestKpiCreatedEvent {
    pub id: DigestDigestKpiId,
    pub data: DigestDigestKpiDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a DigestDigestKpi is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DigestDigestKpiUpdatedEvent {
    pub id: DigestDigestKpiId,
    pub data: DigestDigestKpiDto,
    pub occurred_at: DateTime<Utc>,
}

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

// ============================================================================
// DIGESTTIP EVENTS
// ============================================================================

/// Event published when a DigestTip is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DigestTipCreatedEvent {
    pub id: DigestTipId,
    pub data: DigestTipDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a DigestTip is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DigestTipUpdatedEvent {
    pub id: DigestTipId,
    pub data: DigestTipDto,
    pub occurred_at: DateTime<Utc>,
}

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

// ============================================================================
// DIGESTTIPUSER EVENTS
// ============================================================================

/// Event published when a DigestTipUser is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DigestTipUserCreatedEvent {
    pub id: DigestTipUserId,
    pub data: DigestTipUserDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a DigestTipUser is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DigestTipUserUpdatedEvent {
    pub id: DigestTipUserId,
    pub data: DigestTipUserDto,
    pub occurred_at: DateTime<Utc>,
}

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

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

/// All events published by Digest module
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum DigestEvent {
    DigestDigestCreated(DigestDigestCreatedEvent),
    DigestDigestUpdated(DigestDigestUpdatedEvent),
    DigestDigestDeleted(DigestDigestDeletedEvent),
    DigestSubscriptionCreated(DigestSubscriptionCreatedEvent),
    DigestSubscriptionUpdated(DigestSubscriptionUpdatedEvent),
    DigestSubscriptionDeleted(DigestSubscriptionDeletedEvent),
    DigestDigestKpiCreated(DigestDigestKpiCreatedEvent),
    DigestDigestKpiUpdated(DigestDigestKpiUpdatedEvent),
    DigestDigestKpiDeleted(DigestDigestKpiDeletedEvent),
    DigestTipCreated(DigestTipCreatedEvent),
    DigestTipUpdated(DigestTipUpdatedEvent),
    DigestTipDeleted(DigestTipDeletedEvent),
    DigestTipUserCreated(DigestTipUserCreatedEvent),
    DigestTipUserUpdated(DigestTipUserUpdatedEvent),
    DigestTipUserDeleted(DigestTipUserDeletedEvent),
}

/// Metadata for module events
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DigestEventMetadata {
    pub module: &'static str,
    pub version: &'static str,
}

impl Default for DigestEventMetadata {
    fn default() -> Self {
        Self {
            module: "digest",
            version: "1.0",
        }
    }
}

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

// <<< CUSTOM EVENTS START >>>
// Add custom public events here
// <<< CUSTOM EVENTS END >>>