1use serde::{Deserialize, Serialize};
9use chrono::{DateTime, Utc};
10
11use super::types::*;
12
13#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
35pub struct AttributeDeletedEvent {
36 pub id: AttributeId,
37 pub occurred_at: DateTime<Utc>,
38}
39
40#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
62pub struct AttributeValueDeletedEvent {
63 pub id: AttributeValueId,
64 pub occurred_at: DateTime<Utc>,
65}
66
67#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
89pub struct BrandDeletedEvent {
90 pub id: BrandId,
91 pub occurred_at: DateTime<Utc>,
92}
93
94#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
116pub struct ItemDeletedEvent {
117 pub id: ItemId,
118 pub occurred_at: DateTime<Utc>,
119}
120
121#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
143pub struct ItemGroupDeletedEvent {
144 pub id: ItemGroupId,
145 pub occurred_at: DateTime<Utc>,
146}
147
148#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
170pub struct ItemVariantDeletedEvent {
171 pub id: ItemVariantId,
172 pub occurred_at: DateTime<Utc>,
173}
174
175#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
197pub struct UomDeletedEvent {
198 pub id: UomId,
199 pub occurred_at: DateTime<Utc>,
200}
201
202#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
224pub struct UomConversionDeletedEvent {
225 pub id: UomConversionId,
226 pub occurred_at: DateTime<Utc>,
227}
228
229#[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#[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