Skip to main content

backbone_catalog/exports/
events.rs

1//! Public events for Catalog module
2//!
3//! Generated by metaphor-schema. Do not edit manually.
4//!
5//! These events are published by this module for other modules to subscribe to.
6//! Events are the primary mechanism for cross-module communication.
7
8use serde::{Deserialize, Serialize};
9use chrono::{DateTime, Utc};
10
11use super::types::*;
12
13// ============================================================================
14// ATTRIBUTE EVENTS
15// ============================================================================
16
17/// Event published when a Attribute is created
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct AttributeCreatedEvent {
20    pub id: AttributeId,
21    pub data: AttributeDto,
22    pub occurred_at: DateTime<Utc>,
23}
24
25/// Event published when a Attribute is updated
26#[derive(Debug, Clone, Serialize, Deserialize)]
27pub struct AttributeUpdatedEvent {
28    pub id: AttributeId,
29    pub data: AttributeDto,
30    pub occurred_at: DateTime<Utc>,
31}
32
33/// Event published when a Attribute is deleted
34#[derive(Debug, Clone, Serialize, Deserialize)]
35pub struct AttributeDeletedEvent {
36    pub id: AttributeId,
37    pub occurred_at: DateTime<Utc>,
38}
39
40// ============================================================================
41// ATTRIBUTEVALUE EVENTS
42// ============================================================================
43
44/// Event published when a AttributeValue is created
45#[derive(Debug, Clone, Serialize, Deserialize)]
46pub struct AttributeValueCreatedEvent {
47    pub id: AttributeValueId,
48    pub data: AttributeValueDto,
49    pub occurred_at: DateTime<Utc>,
50}
51
52/// Event published when a AttributeValue is updated
53#[derive(Debug, Clone, Serialize, Deserialize)]
54pub struct AttributeValueUpdatedEvent {
55    pub id: AttributeValueId,
56    pub data: AttributeValueDto,
57    pub occurred_at: DateTime<Utc>,
58}
59
60/// Event published when a AttributeValue is deleted
61#[derive(Debug, Clone, Serialize, Deserialize)]
62pub struct AttributeValueDeletedEvent {
63    pub id: AttributeValueId,
64    pub occurred_at: DateTime<Utc>,
65}
66
67// ============================================================================
68// BRAND EVENTS
69// ============================================================================
70
71/// Event published when a Brand is created
72#[derive(Debug, Clone, Serialize, Deserialize)]
73pub struct BrandCreatedEvent {
74    pub id: BrandId,
75    pub data: BrandDto,
76    pub occurred_at: DateTime<Utc>,
77}
78
79/// Event published when a Brand is updated
80#[derive(Debug, Clone, Serialize, Deserialize)]
81pub struct BrandUpdatedEvent {
82    pub id: BrandId,
83    pub data: BrandDto,
84    pub occurred_at: DateTime<Utc>,
85}
86
87/// Event published when a Brand is deleted
88#[derive(Debug, Clone, Serialize, Deserialize)]
89pub struct BrandDeletedEvent {
90    pub id: BrandId,
91    pub occurred_at: DateTime<Utc>,
92}
93
94// ============================================================================
95// ITEM EVENTS
96// ============================================================================
97
98/// Event published when a Item is created
99#[derive(Debug, Clone, Serialize, Deserialize)]
100pub struct ItemCreatedEvent {
101    pub id: ItemId,
102    pub data: ItemDto,
103    pub occurred_at: DateTime<Utc>,
104}
105
106/// Event published when a Item is updated
107#[derive(Debug, Clone, Serialize, Deserialize)]
108pub struct ItemUpdatedEvent {
109    pub id: ItemId,
110    pub data: ItemDto,
111    pub occurred_at: DateTime<Utc>,
112}
113
114/// Event published when a Item is deleted
115#[derive(Debug, Clone, Serialize, Deserialize)]
116pub struct ItemDeletedEvent {
117    pub id: ItemId,
118    pub occurred_at: DateTime<Utc>,
119}
120
121// ============================================================================
122// ITEMGROUP EVENTS
123// ============================================================================
124
125/// Event published when a ItemGroup is created
126#[derive(Debug, Clone, Serialize, Deserialize)]
127pub struct ItemGroupCreatedEvent {
128    pub id: ItemGroupId,
129    pub data: ItemGroupDto,
130    pub occurred_at: DateTime<Utc>,
131}
132
133/// Event published when a ItemGroup is updated
134#[derive(Debug, Clone, Serialize, Deserialize)]
135pub struct ItemGroupUpdatedEvent {
136    pub id: ItemGroupId,
137    pub data: ItemGroupDto,
138    pub occurred_at: DateTime<Utc>,
139}
140
141/// Event published when a ItemGroup is deleted
142#[derive(Debug, Clone, Serialize, Deserialize)]
143pub struct ItemGroupDeletedEvent {
144    pub id: ItemGroupId,
145    pub occurred_at: DateTime<Utc>,
146}
147
148// ============================================================================
149// ITEMVARIANT EVENTS
150// ============================================================================
151
152/// Event published when a ItemVariant is created
153#[derive(Debug, Clone, Serialize, Deserialize)]
154pub struct ItemVariantCreatedEvent {
155    pub id: ItemVariantId,
156    pub data: ItemVariantDto,
157    pub occurred_at: DateTime<Utc>,
158}
159
160/// Event published when a ItemVariant is updated
161#[derive(Debug, Clone, Serialize, Deserialize)]
162pub struct ItemVariantUpdatedEvent {
163    pub id: ItemVariantId,
164    pub data: ItemVariantDto,
165    pub occurred_at: DateTime<Utc>,
166}
167
168/// Event published when a ItemVariant is deleted
169#[derive(Debug, Clone, Serialize, Deserialize)]
170pub struct ItemVariantDeletedEvent {
171    pub id: ItemVariantId,
172    pub occurred_at: DateTime<Utc>,
173}
174
175// ============================================================================
176// UOM EVENTS
177// ============================================================================
178
179/// Event published when a Uom is created
180#[derive(Debug, Clone, Serialize, Deserialize)]
181pub struct UomCreatedEvent {
182    pub id: UomId,
183    pub data: UomDto,
184    pub occurred_at: DateTime<Utc>,
185}
186
187/// Event published when a Uom is updated
188#[derive(Debug, Clone, Serialize, Deserialize)]
189pub struct UomUpdatedEvent {
190    pub id: UomId,
191    pub data: UomDto,
192    pub occurred_at: DateTime<Utc>,
193}
194
195/// Event published when a Uom is deleted
196#[derive(Debug, Clone, Serialize, Deserialize)]
197pub struct UomDeletedEvent {
198    pub id: UomId,
199    pub occurred_at: DateTime<Utc>,
200}
201
202// ============================================================================
203// UOMCONVERSION EVENTS
204// ============================================================================
205
206/// Event published when a UomConversion is created
207#[derive(Debug, Clone, Serialize, Deserialize)]
208pub struct UomConversionCreatedEvent {
209    pub id: UomConversionId,
210    pub data: UomConversionDto,
211    pub occurred_at: DateTime<Utc>,
212}
213
214/// Event published when a UomConversion is updated
215#[derive(Debug, Clone, Serialize, Deserialize)]
216pub struct UomConversionUpdatedEvent {
217    pub id: UomConversionId,
218    pub data: UomConversionDto,
219    pub occurred_at: DateTime<Utc>,
220}
221
222/// Event published when a UomConversion is deleted
223#[derive(Debug, Clone, Serialize, Deserialize)]
224pub struct UomConversionDeletedEvent {
225    pub id: UomConversionId,
226    pub occurred_at: DateTime<Utc>,
227}
228
229// ============================================================================
230// MODULE EVENT ENUM
231// ============================================================================
232
233/// All events published by Catalog module
234#[derive(Debug, Clone, Serialize, Deserialize)]
235#[serde(tag = "type")]
236pub enum CatalogEvent {
237    AttributeCreated(AttributeCreatedEvent),
238    AttributeUpdated(AttributeUpdatedEvent),
239    AttributeDeleted(AttributeDeletedEvent),
240    AttributeValueCreated(AttributeValueCreatedEvent),
241    AttributeValueUpdated(AttributeValueUpdatedEvent),
242    AttributeValueDeleted(AttributeValueDeletedEvent),
243    BrandCreated(BrandCreatedEvent),
244    BrandUpdated(BrandUpdatedEvent),
245    BrandDeleted(BrandDeletedEvent),
246    ItemCreated(ItemCreatedEvent),
247    ItemUpdated(ItemUpdatedEvent),
248    ItemDeleted(ItemDeletedEvent),
249    ItemGroupCreated(ItemGroupCreatedEvent),
250    ItemGroupUpdated(ItemGroupUpdatedEvent),
251    ItemGroupDeleted(ItemGroupDeletedEvent),
252    ItemVariantCreated(ItemVariantCreatedEvent),
253    ItemVariantUpdated(ItemVariantUpdatedEvent),
254    ItemVariantDeleted(ItemVariantDeletedEvent),
255    UomCreated(UomCreatedEvent),
256    UomUpdated(UomUpdatedEvent),
257    UomDeleted(UomDeletedEvent),
258    UomConversionCreated(UomConversionCreatedEvent),
259    UomConversionUpdated(UomConversionUpdatedEvent),
260    UomConversionDeleted(UomConversionDeletedEvent),
261}
262
263/// Metadata for module events
264#[derive(Debug, Clone, Serialize, Deserialize)]
265pub struct CatalogEventMetadata {
266    pub module: &'static str,
267    pub version: &'static str,
268}
269
270impl Default for CatalogEventMetadata {
271    fn default() -> Self {
272        Self {
273            module: "catalog",
274            version: "1.0",
275        }
276    }
277}
278
279// ============================================================================
280// CUSTOM EVENTS
281// ============================================================================
282
283// <<< CUSTOM EVENTS START >>>
284// Add custom public events here
285// <<< CUSTOM EVENTS END >>>