// SPDX-FileCopyrightText: 2024 Aravinth Manivannan // // SPDX-License-Identifier: AGPL-3.0-or-later use cqrs_es::DomainEvent; use serde::{Deserialize, Serialize}; use super::{ category_added_event::*, customization_added_event::CustomizationAddedEvent, product_added_event::ProductAddedEvent, product_updated_event::ProductUpdatedEvent, store_added_event::StoreAddedEvent, }; #[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq, Ord, PartialOrd)] pub enum InventoryEvent { CategoryAdded(CategoryAddedEvent), StoreAdded(StoreAddedEvent), ProductAdded(ProductAddedEvent), CustomizationAdded(CustomizationAddedEvent), ProductUpdated(ProductUpdatedEvent), } impl DomainEvent for InventoryEvent { fn event_version(&self) -> String { "1.0".to_string() } fn event_type(&self) -> String { let e: &str = match self { InventoryEvent::CategoryAdded { .. } => "InventoryCategoryAdded", InventoryEvent::StoreAdded { .. } => "InventoryStoreAdded", InventoryEvent::ProductAdded { .. } => "InventoryProductAdded", InventoryEvent::CustomizationAdded { .. } => "InventoryCustomizationAdded", InventoryEvent::ProductUpdated { .. } => "InventoryProductUpdated", }; e.to_string() } }