backbone-support 0.12.0

Customer support: issues tracked against service level agreements, and warranty claims
Documentation
//! Public events for Support 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::*;

// ============================================================================
// ISSUE EVENTS
// ============================================================================

/// Event published when a Issue is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IssueCreatedEvent {
    pub id: IssueId,
    pub data: IssueDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a Issue is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IssueUpdatedEvent {
    pub id: IssueId,
    pub data: IssueDto,
    pub occurred_at: DateTime<Utc>,
}

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

// ============================================================================
// SERVICELEVELAGREEMENT EVENTS
// ============================================================================

/// Event published when a ServiceLevelAgreement is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServiceLevelAgreementCreatedEvent {
    pub id: ServiceLevelAgreementId,
    pub data: ServiceLevelAgreementDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a ServiceLevelAgreement is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServiceLevelAgreementUpdatedEvent {
    pub id: ServiceLevelAgreementId,
    pub data: ServiceLevelAgreementDto,
    pub occurred_at: DateTime<Utc>,
}

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

// ============================================================================
// SERVICELEVELPRIORITY EVENTS
// ============================================================================

/// Event published when a ServiceLevelPriority is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServiceLevelPriorityCreatedEvent {
    pub id: ServiceLevelPriorityId,
    pub data: ServiceLevelPriorityDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a ServiceLevelPriority is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServiceLevelPriorityUpdatedEvent {
    pub id: ServiceLevelPriorityId,
    pub data: ServiceLevelPriorityDto,
    pub occurred_at: DateTime<Utc>,
}

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

// ============================================================================
// WARRANTYCLAIM EVENTS
// ============================================================================

/// Event published when a WarrantyClaim is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WarrantyClaimCreatedEvent {
    pub id: WarrantyClaimId,
    pub data: WarrantyClaimDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a WarrantyClaim is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WarrantyClaimUpdatedEvent {
    pub id: WarrantyClaimId,
    pub data: WarrantyClaimDto,
    pub occurred_at: DateTime<Utc>,
}

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

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

/// All events published by Support module
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum SupportEvent {
    IssueCreated(IssueCreatedEvent),
    IssueUpdated(IssueUpdatedEvent),
    IssueDeleted(IssueDeletedEvent),
    ServiceLevelAgreementCreated(ServiceLevelAgreementCreatedEvent),
    ServiceLevelAgreementUpdated(ServiceLevelAgreementUpdatedEvent),
    ServiceLevelAgreementDeleted(ServiceLevelAgreementDeletedEvent),
    ServiceLevelPriorityCreated(ServiceLevelPriorityCreatedEvent),
    ServiceLevelPriorityUpdated(ServiceLevelPriorityUpdatedEvent),
    ServiceLevelPriorityDeleted(ServiceLevelPriorityDeletedEvent),
    WarrantyClaimCreated(WarrantyClaimCreatedEvent),
    WarrantyClaimUpdated(WarrantyClaimUpdatedEvent),
    WarrantyClaimDeleted(WarrantyClaimDeletedEvent),
}

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

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

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

// Add custom public events here