use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};
use super::types::*;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AttributeCreatedEvent {
pub id: AttributeId,
pub data: AttributeDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AttributeUpdatedEvent {
pub id: AttributeId,
pub data: AttributeDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AttributeDeletedEvent {
pub id: AttributeId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AttributeValueCreatedEvent {
pub id: AttributeValueId,
pub data: AttributeValueDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AttributeValueUpdatedEvent {
pub id: AttributeValueId,
pub data: AttributeValueDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AttributeValueDeletedEvent {
pub id: AttributeValueId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BrandCreatedEvent {
pub id: BrandId,
pub data: BrandDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BrandUpdatedEvent {
pub id: BrandId,
pub data: BrandDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BrandDeletedEvent {
pub id: BrandId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ItemCreatedEvent {
pub id: ItemId,
pub data: ItemDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ItemUpdatedEvent {
pub id: ItemId,
pub data: ItemDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ItemDeletedEvent {
pub id: ItemId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ItemGroupCreatedEvent {
pub id: ItemGroupId,
pub data: ItemGroupDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ItemGroupUpdatedEvent {
pub id: ItemGroupId,
pub data: ItemGroupDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ItemGroupDeletedEvent {
pub id: ItemGroupId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ItemVariantCreatedEvent {
pub id: ItemVariantId,
pub data: ItemVariantDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ItemVariantUpdatedEvent {
pub id: ItemVariantId,
pub data: ItemVariantDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ItemVariantDeletedEvent {
pub id: ItemVariantId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UomCreatedEvent {
pub id: UomId,
pub data: UomDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UomUpdatedEvent {
pub id: UomId,
pub data: UomDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UomDeletedEvent {
pub id: UomId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UomConversionCreatedEvent {
pub id: UomConversionId,
pub data: UomConversionDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UomConversionUpdatedEvent {
pub id: UomConversionId,
pub data: UomConversionDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UomConversionDeletedEvent {
pub id: UomConversionId,
pub occurred_at: DateTime<Utc>,
}
#[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),
}
#[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",
}
}
}