backbone-catalog 0.7.0

Canonical product/service identity: Item, Item Group, UOM (Indonesia-first)
Documentation
//! Public events for Catalog 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::*;

// ============================================================================
// ATTRIBUTE EVENTS
// ============================================================================

/// Event published when a Attribute is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AttributeCreatedEvent {
    pub id: AttributeId,
    pub data: AttributeDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a Attribute is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AttributeUpdatedEvent {
    pub id: AttributeId,
    pub data: AttributeDto,
    pub occurred_at: DateTime<Utc>,
}

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

// ============================================================================
// ATTRIBUTEVALUE EVENTS
// ============================================================================

/// Event published when a AttributeValue is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AttributeValueCreatedEvent {
    pub id: AttributeValueId,
    pub data: AttributeValueDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a AttributeValue is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AttributeValueUpdatedEvent {
    pub id: AttributeValueId,
    pub data: AttributeValueDto,
    pub occurred_at: DateTime<Utc>,
}

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

// ============================================================================
// BRAND EVENTS
// ============================================================================

/// Event published when a Brand is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BrandCreatedEvent {
    pub id: BrandId,
    pub data: BrandDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a Brand is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BrandUpdatedEvent {
    pub id: BrandId,
    pub data: BrandDto,
    pub occurred_at: DateTime<Utc>,
}

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

// ============================================================================
// ITEM EVENTS
// ============================================================================

/// Event published when a Item is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ItemCreatedEvent {
    pub id: ItemId,
    pub data: ItemDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a Item is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ItemUpdatedEvent {
    pub id: ItemId,
    pub data: ItemDto,
    pub occurred_at: DateTime<Utc>,
}

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

// ============================================================================
// ITEMGROUP EVENTS
// ============================================================================

/// Event published when a ItemGroup is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ItemGroupCreatedEvent {
    pub id: ItemGroupId,
    pub data: ItemGroupDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a ItemGroup is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ItemGroupUpdatedEvent {
    pub id: ItemGroupId,
    pub data: ItemGroupDto,
    pub occurred_at: DateTime<Utc>,
}

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

// ============================================================================
// ITEMVARIANT EVENTS
// ============================================================================

/// Event published when a ItemVariant is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ItemVariantCreatedEvent {
    pub id: ItemVariantId,
    pub data: ItemVariantDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a ItemVariant is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ItemVariantUpdatedEvent {
    pub id: ItemVariantId,
    pub data: ItemVariantDto,
    pub occurred_at: DateTime<Utc>,
}

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

// ============================================================================
// UOM EVENTS
// ============================================================================

/// Event published when a Uom is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UomCreatedEvent {
    pub id: UomId,
    pub data: UomDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a Uom is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UomUpdatedEvent {
    pub id: UomId,
    pub data: UomDto,
    pub occurred_at: DateTime<Utc>,
}

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

// ============================================================================
// UOMCONVERSION EVENTS
// ============================================================================

/// Event published when a UomConversion is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UomConversionCreatedEvent {
    pub id: UomConversionId,
    pub data: UomConversionDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a UomConversion is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UomConversionUpdatedEvent {
    pub id: UomConversionId,
    pub data: UomConversionDto,
    pub occurred_at: DateTime<Utc>,
}

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

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

/// All events published by Catalog module
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum CatalogEvent {
    AttributeCreated(AttributeCreatedEvent),
    AttributeUpdated(AttributeUpdatedEvent),
    AttributeDeleted(AttributeDeletedEvent),
    AttributeValueCreated(AttributeValueCreatedEvent),
    AttributeValueUpdated(AttributeValueUpdatedEvent),
    AttributeValueDeleted(AttributeValueDeletedEvent),
    BrandCreated(BrandCreatedEvent),
    BrandUpdated(BrandUpdatedEvent),
    BrandDeleted(BrandDeletedEvent),
    ItemCreated(ItemCreatedEvent),
    ItemUpdated(ItemUpdatedEvent),
    ItemDeleted(ItemDeletedEvent),
    ItemGroupCreated(ItemGroupCreatedEvent),
    ItemGroupUpdated(ItemGroupUpdatedEvent),
    ItemGroupDeleted(ItemGroupDeletedEvent),
    ItemVariantCreated(ItemVariantCreatedEvent),
    ItemVariantUpdated(ItemVariantUpdatedEvent),
    ItemVariantDeleted(ItemVariantDeletedEvent),
    UomCreated(UomCreatedEvent),
    UomUpdated(UomUpdatedEvent),
    UomDeleted(UomDeletedEvent),
    UomConversionCreated(UomConversionCreatedEvent),
    UomConversionUpdated(UomConversionUpdatedEvent),
    UomConversionDeleted(UomConversionDeletedEvent),
}

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

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

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

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