@novha/anlia-core-lib 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cdk/bin/infrastructure.ts +18 -0
- package/cdk/bin/project-names.ts +7 -0
- package/cdk/lib/infrastructure.ts +37 -0
- package/cdk.json +70 -0
- package/dist/cdk/bin/infrastructure.d.ts +1 -0
- package/dist/cdk/bin/infrastructure.js +20 -0
- package/dist/cdk/bin/project-names.d.ts +6 -0
- package/dist/cdk/bin/project-names.js +4 -0
- package/dist/cdk/lib/infrastructure.d.ts +6 -0
- package/dist/cdk/lib/infrastructure.js +32 -0
- package/dist/src/enums/domain/DayOfWeek.d.ts +9 -0
- package/dist/src/enums/domain/DayOfWeek.js +13 -0
- package/dist/src/enums/domain/Delivery.d.ts +19 -0
- package/dist/src/enums/domain/Delivery.js +24 -0
- package/dist/src/enums/domain/Employee.d.ts +12 -0
- package/dist/src/enums/domain/Employee.js +16 -0
- package/dist/src/enums/domain/Ingredient.d.ts +31 -0
- package/dist/src/enums/domain/Ingredient.js +37 -0
- package/dist/src/enums/domain/Inventory.d.ts +29 -0
- package/dist/src/enums/domain/Inventory.js +36 -0
- package/dist/src/enums/domain/Kitchen.d.ts +49 -0
- package/dist/src/enums/domain/Kitchen.js +59 -0
- package/dist/src/enums/domain/Menu.d.ts +13 -0
- package/dist/src/enums/domain/Menu.js +18 -0
- package/dist/src/enums/domain/Payments.d.ts +21 -0
- package/dist/src/enums/domain/Payments.js +26 -0
- package/dist/src/enums/domain/Recipe.d.ts +14 -0
- package/dist/src/enums/domain/Recipe.js +19 -0
- package/dist/src/enums/domain/Reservation.d.ts +17 -0
- package/dist/src/enums/domain/Reservation.js +22 -0
- package/dist/src/enums/domain/Restaurant.d.ts +39 -0
- package/dist/src/enums/domain/Restaurant.js +45 -0
- package/dist/src/enums/domain/Table.d.ts +23 -0
- package/dist/src/enums/domain/Table.js +29 -0
- package/dist/src/enums/domain/Vendors.d.ts +29 -0
- package/dist/src/enums/domain/Vendors.js +35 -0
- package/dist/src/enums/index.d.ts +13 -0
- package/dist/src/enums/index.js +29 -0
- package/dist/src/eventBridge/EventBridgeModule.d.ts +2 -0
- package/dist/src/eventBridge/EventBridgeModule.js +26 -0
- package/dist/src/eventBridge/domain/EventBridgeOptions.d.ts +8 -0
- package/dist/src/eventBridge/domain/EventBridgeOptions.js +2 -0
- package/dist/src/eventBridge/ioc/index.d.ts +3 -0
- package/dist/src/eventBridge/ioc/index.js +6 -0
- package/dist/src/eventBridge/ioc.d.ts +3 -0
- package/dist/src/eventBridge/ioc.js +6 -0
- package/dist/src/eventBridge/service/EventBridgeService.d.ts +5 -0
- package/dist/src/eventBridge/service/EventBridgeService.js +2 -0
- package/dist/src/eventBridge/service/EventBridgeServiceImpl.d.ts +13 -0
- package/dist/src/eventBridge/service/EventBridgeServiceImpl.js +63 -0
- package/dist/src/events/domain/CustomerEvents.d.ts +54 -0
- package/dist/src/events/domain/CustomerEvents.js +2 -0
- package/dist/src/events/domain/DeliveryEvents.d.ts +61 -0
- package/dist/src/events/domain/DeliveryEvents.js +2 -0
- package/dist/src/events/domain/DomainEvent.d.ts +12 -0
- package/dist/src/events/domain/DomainEvent.js +2 -0
- package/dist/src/events/domain/DomainEventType.d.ts +119 -0
- package/dist/src/events/domain/DomainEventType.js +136 -0
- package/dist/src/events/domain/EmployeeEvents.d.ts +51 -0
- package/dist/src/events/domain/EmployeeEvents.js +2 -0
- package/dist/src/events/domain/InventoryEvents.d.ts +141 -0
- package/dist/src/events/domain/InventoryEvents.js +2 -0
- package/dist/src/events/domain/OrderEvents.d.ts +105 -0
- package/dist/src/events/domain/OrderEvents.js +2 -0
- package/dist/src/events/domain/PaymentEvents.d.ts +73 -0
- package/dist/src/events/domain/PaymentEvents.js +2 -0
- package/dist/src/events/domain/RecipeEvents.d.ts +45 -0
- package/dist/src/events/domain/RecipeEvents.js +2 -0
- package/dist/src/events/domain/ReservationEvents.d.ts +93 -0
- package/dist/src/events/domain/ReservationEvents.js +2 -0
- package/dist/src/events/domain/RestaurantEvents.d.ts +62 -0
- package/dist/src/events/domain/RestaurantEvents.js +2 -0
- package/dist/src/events/domain/TableEvents.d.ts +71 -0
- package/dist/src/events/domain/TableEvents.js +2 -0
- package/dist/src/events/domain/VendorEvents.d.ts +28 -0
- package/dist/src/events/domain/VendorEvents.js +2 -0
- package/dist/src/events/index.d.ts +13 -0
- package/dist/src/events/index.js +29 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.js +20 -0
- package/dist/src/interfaces/Address.d.ts +7 -0
- package/dist/src/interfaces/Address.js +2 -0
- package/dist/src/interfaces/Customer.d.ts +21 -0
- package/dist/src/interfaces/Customer.js +2 -0
- package/dist/src/interfaces/Delivery.d.ts +62 -0
- package/dist/src/interfaces/Delivery.js +2 -0
- package/dist/src/interfaces/Employee.d.ts +19 -0
- package/dist/src/interfaces/Employee.js +2 -0
- package/dist/src/interfaces/Ingredient.d.ts +42 -0
- package/dist/src/interfaces/Ingredient.js +2 -0
- package/dist/src/interfaces/Inventory.d.ts +26 -0
- package/dist/src/interfaces/Inventory.js +2 -0
- package/dist/src/interfaces/Kitchen.d.ts +72 -0
- package/dist/src/interfaces/Kitchen.js +2 -0
- package/dist/src/interfaces/Location.d.ts +14 -0
- package/dist/src/interfaces/Location.js +2 -0
- package/dist/src/interfaces/Menu.d.ts +72 -0
- package/dist/src/interfaces/Menu.js +2 -0
- package/dist/src/interfaces/Money.d.ts +5 -0
- package/dist/src/interfaces/Money.js +2 -0
- package/dist/src/interfaces/OpeningHours.d.ts +7 -0
- package/dist/src/interfaces/OpeningHours.js +2 -0
- package/dist/src/interfaces/Payment.d.ts +36 -0
- package/dist/src/interfaces/Payment.js +2 -0
- package/dist/src/interfaces/Recipe.d.ts +58 -0
- package/dist/src/interfaces/Recipe.js +2 -0
- package/dist/src/interfaces/Resevation.d.ts +25 -0
- package/dist/src/interfaces/Resevation.js +2 -0
- package/dist/src/interfaces/Restaurant.d.ts +24 -0
- package/dist/src/interfaces/Restaurant.js +2 -0
- package/dist/src/interfaces/Table.d.ts +54 -0
- package/dist/src/interfaces/Table.js +2 -0
- package/dist/src/interfaces/Vendor.d.ts +19 -0
- package/dist/src/interfaces/Vendor.js +2 -0
- package/dist/src/interfaces/domain/Address.d.ts +7 -0
- package/dist/src/interfaces/domain/Address.js +2 -0
- package/dist/src/interfaces/domain/Customer.d.ts +21 -0
- package/dist/src/interfaces/domain/Customer.js +2 -0
- package/dist/src/interfaces/domain/Delivery.d.ts +62 -0
- package/dist/src/interfaces/domain/Delivery.js +2 -0
- package/dist/src/interfaces/domain/Employee.d.ts +19 -0
- package/dist/src/interfaces/domain/Employee.js +2 -0
- package/dist/src/interfaces/domain/Ingredient.d.ts +42 -0
- package/dist/src/interfaces/domain/Ingredient.js +2 -0
- package/dist/src/interfaces/domain/Inventory.d.ts +26 -0
- package/dist/src/interfaces/domain/Inventory.js +2 -0
- package/dist/src/interfaces/domain/Kitchen.d.ts +72 -0
- package/dist/src/interfaces/domain/Kitchen.js +2 -0
- package/dist/src/interfaces/domain/Location.d.ts +14 -0
- package/dist/src/interfaces/domain/Location.js +2 -0
- package/dist/src/interfaces/domain/Menu.d.ts +72 -0
- package/dist/src/interfaces/domain/Menu.js +2 -0
- package/dist/src/interfaces/domain/Money.d.ts +5 -0
- package/dist/src/interfaces/domain/Money.js +2 -0
- package/dist/src/interfaces/domain/OpeningHours.d.ts +7 -0
- package/dist/src/interfaces/domain/OpeningHours.js +2 -0
- package/dist/src/interfaces/domain/Payment.d.ts +36 -0
- package/dist/src/interfaces/domain/Payment.js +2 -0
- package/dist/src/interfaces/domain/Recipe.d.ts +58 -0
- package/dist/src/interfaces/domain/Recipe.js +2 -0
- package/dist/src/interfaces/domain/Reservation.d.ts +25 -0
- package/dist/src/interfaces/domain/Reservation.js +2 -0
- package/dist/src/interfaces/domain/Restaurant.d.ts +24 -0
- package/dist/src/interfaces/domain/Restaurant.js +2 -0
- package/dist/src/interfaces/domain/Table.d.ts +54 -0
- package/dist/src/interfaces/domain/Table.js +2 -0
- package/dist/src/interfaces/domain/Vendor.d.ts +19 -0
- package/dist/src/interfaces/domain/Vendor.js +2 -0
- package/dist/src/interfaces/index.d.ts +17 -0
- package/dist/src/interfaces/index.js +33 -0
- package/dist/src/orders/OrderModule.d.ts +2 -0
- package/dist/src/orders/OrderModule.js +28 -0
- package/dist/src/orders/domain/Enums.d.ts +16 -0
- package/dist/src/orders/domain/Enums.js +21 -0
- package/dist/src/orders/domain/Order.d.ts +89 -0
- package/dist/src/orders/domain/Order.js +2 -0
- package/dist/src/orders/domain/OrderItem.d.ts +53 -0
- package/dist/src/orders/domain/OrderItem.js +2 -0
- package/dist/src/orders/domain/posDto/SquareOrder.d.ts +347 -0
- package/dist/src/orders/domain/posDto/SquareOrder.js +8 -0
- package/dist/src/orders/index.d.ts +7 -0
- package/dist/src/orders/index.js +25 -0
- package/dist/src/orders/ioc/index.d.ts +3 -0
- package/dist/src/orders/ioc/index.js +6 -0
- package/dist/src/orders/services/square/SquareOrderService.d.ts +22 -0
- package/dist/src/orders/services/square/SquareOrderService.js +4 -0
- package/dist/src/orders/services/square/SquareOrderServiceImpl.d.ts +32 -0
- package/dist/src/orders/services/square/SquareOrderServiceImpl.js +308 -0
- package/jest.config.js +8 -0
- package/package.json +43 -0
- package/src/enums/domain/DayOfWeek.ts +9 -0
- package/src/enums/domain/Delivery.ts +20 -0
- package/src/enums/domain/Employee.ts +12 -0
- package/src/enums/domain/Ingredient.ts +33 -0
- package/src/enums/domain/Inventory.ts +39 -0
- package/src/enums/domain/Kitchen.ts +89 -0
- package/src/enums/domain/Menu.ts +14 -0
- package/src/enums/domain/Payments.ts +41 -0
- package/src/enums/domain/Recipe.ts +15 -0
- package/src/enums/domain/Reservation.ts +18 -0
- package/src/enums/domain/Restaurant.ts +41 -0
- package/src/enums/domain/Table.ts +39 -0
- package/src/enums/domain/Vendors.ts +45 -0
- package/src/enums/index.ts +13 -0
- package/src/eventBridge/EventBridgeModule.ts +14 -0
- package/src/eventBridge/domain/EventBridgeOptions.ts +8 -0
- package/src/eventBridge/ioc/index.ts +3 -0
- package/src/eventBridge/ioc.ts +3 -0
- package/src/eventBridge/service/EventBridgeService.ts +8 -0
- package/src/eventBridge/service/EventBridgeServiceImpl.ts +67 -0
- package/src/events/domain/CustomerEvents.ts +79 -0
- package/src/events/domain/DeliveryEvents.ts +82 -0
- package/src/events/domain/DomainEvent.ts +17 -0
- package/src/events/domain/DomainEventType.ts +143 -0
- package/src/events/domain/EmployeeEvents.ts +74 -0
- package/src/events/domain/InventoryEvents.ts +184 -0
- package/src/events/domain/OrderEvents.ts +142 -0
- package/src/events/domain/PaymentEvents.ts +92 -0
- package/src/events/domain/RecipeEvents.ts +64 -0
- package/src/events/domain/ReservationEvents.ts +133 -0
- package/src/events/domain/RestaurantEvents.ts +89 -0
- package/src/events/domain/TableEvents.ts +102 -0
- package/src/events/domain/VendorEvents.ts +42 -0
- package/src/events/index.ts +13 -0
- package/src/index.ts +4 -0
- package/src/interfaces/domain/Address.ts +7 -0
- package/src/interfaces/domain/Customer.ts +33 -0
- package/src/interfaces/domain/Delivery.ts +96 -0
- package/src/interfaces/domain/Employee.ts +29 -0
- package/src/interfaces/domain/Ingredient.ts +68 -0
- package/src/interfaces/domain/Inventory.ts +52 -0
- package/src/interfaces/domain/Kitchen.ts +128 -0
- package/src/interfaces/domain/Location.ts +20 -0
- package/src/interfaces/domain/Menu.ts +121 -0
- package/src/interfaces/domain/Money.ts +6 -0
- package/src/interfaces/domain/OpeningHours.ts +11 -0
- package/src/interfaces/domain/Payment.ts +45 -0
- package/src/interfaces/domain/Recipe.ts +91 -0
- package/src/interfaces/domain/Reservation.ts +45 -0
- package/src/interfaces/domain/Restaurant.ts +45 -0
- package/src/interfaces/domain/Table.ts +69 -0
- package/src/interfaces/domain/Vendor.ts +35 -0
- package/src/interfaces/index.ts +17 -0
- package/src/orders/OrderModule.ts +17 -0
- package/src/orders/domain/Enums.ts +17 -0
- package/src/orders/domain/Order.ts +109 -0
- package/src/orders/domain/OrderItem.ts +68 -0
- package/src/orders/domain/posDto/SquareOrder.ts +346 -0
- package/src/orders/index.ts +7 -0
- package/src/orders/ioc/index.ts +3 -0
- package/src/orders/services/square/SquareOrderService.ts +27 -0
- package/src/orders/services/square/SquareOrderServiceImpl.ts +330 -0
- package/tsconfig.json +18 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { DomainEvent } from "./DomainEvent";
|
|
2
|
+
import { IInventoryItem } from "../../interfaces/domain/Inventory";
|
|
3
|
+
import { InventoryTransactionType } from "../../enums/domain/Inventory";
|
|
4
|
+
|
|
5
|
+
// ─── Lifecycle Events ──────────────────────────────────────────────────────────
|
|
6
|
+
|
|
7
|
+
export interface InventoryItemCreated extends DomainEvent {
|
|
8
|
+
eventType: "InventoryItemCreated";
|
|
9
|
+
aggregateType: "InventoryItem";
|
|
10
|
+
item: IInventoryItem;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface InventoryItemUpdated extends DomainEvent {
|
|
14
|
+
eventType: "InventoryItemUpdated";
|
|
15
|
+
aggregateType: "InventoryItem";
|
|
16
|
+
before: Partial<IInventoryItem>;
|
|
17
|
+
after: Partial<IInventoryItem>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface InventoryItemDeleted extends DomainEvent {
|
|
21
|
+
eventType: "InventoryItemDeleted";
|
|
22
|
+
aggregateType: "InventoryItem";
|
|
23
|
+
/** Snapshot of the item at the time of deletion. */
|
|
24
|
+
item: IInventoryItem;
|
|
25
|
+
deletedAt: Date;
|
|
26
|
+
deletedBy?: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// ─── Stock Movement Events ─────────────────────────────────────────────────────
|
|
30
|
+
|
|
31
|
+
export interface InventoryAdjusted extends DomainEvent {
|
|
32
|
+
eventType: "InventoryAdjusted";
|
|
33
|
+
aggregateType: "InventoryItem";
|
|
34
|
+
itemId: string;
|
|
35
|
+
previousQuantity: number;
|
|
36
|
+
newQuantity: number;
|
|
37
|
+
delta: number;
|
|
38
|
+
reason?: string;
|
|
39
|
+
adjustedBy?: string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface InventoryConsumed extends DomainEvent {
|
|
43
|
+
eventType: "InventoryConsumed";
|
|
44
|
+
aggregateType: "InventoryItem";
|
|
45
|
+
itemId: string;
|
|
46
|
+
quantityConsumed: number;
|
|
47
|
+
remainingQuantity: number;
|
|
48
|
+
/** Order or production run that triggered consumption. */
|
|
49
|
+
referenceId?: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface InventoryReceived extends DomainEvent {
|
|
53
|
+
eventType: "InventoryReceived";
|
|
54
|
+
aggregateType: "InventoryItem";
|
|
55
|
+
itemId: string;
|
|
56
|
+
quantityReceived: number;
|
|
57
|
+
newQuantity: number;
|
|
58
|
+
supplierId?: string;
|
|
59
|
+
purchaseOrderId?: string;
|
|
60
|
+
unitCost?: number;
|
|
61
|
+
receivedBy?: string;
|
|
62
|
+
receivedAt: Date;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface InventoryTransferred extends DomainEvent {
|
|
66
|
+
eventType: "InventoryTransferred";
|
|
67
|
+
aggregateType: "InventoryItem";
|
|
68
|
+
itemId: string;
|
|
69
|
+
quantity: number;
|
|
70
|
+
fromLocationId: string;
|
|
71
|
+
toLocationId: string;
|
|
72
|
+
transferredBy?: string;
|
|
73
|
+
transferredAt: Date;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export interface InventoryReturned extends DomainEvent {
|
|
77
|
+
eventType: "InventoryReturned";
|
|
78
|
+
aggregateType: "InventoryItem";
|
|
79
|
+
itemId: string;
|
|
80
|
+
quantityReturned: number;
|
|
81
|
+
newQuantity: number;
|
|
82
|
+
supplierId?: string;
|
|
83
|
+
reason?: string;
|
|
84
|
+
returnedBy?: string;
|
|
85
|
+
returnedAt: Date;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// ─── Loss Events ───────────────────────────────────────────────────────────────
|
|
89
|
+
|
|
90
|
+
export interface InventoryExpired extends DomainEvent {
|
|
91
|
+
eventType: "InventoryExpired";
|
|
92
|
+
aggregateType: "InventoryItem";
|
|
93
|
+
itemId: string;
|
|
94
|
+
quantityExpired: number;
|
|
95
|
+
expiryDate: Date;
|
|
96
|
+
markedBy?: string;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export interface InventorySpoiled extends DomainEvent {
|
|
100
|
+
eventType: "InventorySpoiled";
|
|
101
|
+
aggregateType: "InventoryItem";
|
|
102
|
+
itemId: string;
|
|
103
|
+
quantitySpoiled: number;
|
|
104
|
+
reason?: string;
|
|
105
|
+
markedBy?: string;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// ─── Stock Level Events ────────────────────────────────────────────────────────
|
|
109
|
+
|
|
110
|
+
export interface InventoryLowStock extends DomainEvent {
|
|
111
|
+
eventType: "InventoryLowStock";
|
|
112
|
+
aggregateType: "InventoryItem";
|
|
113
|
+
itemId: string;
|
|
114
|
+
currentQuantity: number;
|
|
115
|
+
minimumStockLevel: number;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export interface InventoryOutOfStock extends DomainEvent {
|
|
119
|
+
eventType: "InventoryOutOfStock";
|
|
120
|
+
aggregateType: "InventoryItem";
|
|
121
|
+
itemId: string;
|
|
122
|
+
occurredAt: Date;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export interface InventoryReplenished extends DomainEvent {
|
|
126
|
+
eventType: "InventoryReplenished";
|
|
127
|
+
aggregateType: "InventoryItem";
|
|
128
|
+
itemId: string;
|
|
129
|
+
quantityAdded: number;
|
|
130
|
+
newQuantity: number;
|
|
131
|
+
transactionType: InventoryTransactionType;
|
|
132
|
+
replenishedBy?: string;
|
|
133
|
+
replenishedAt: Date;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// ─── Transaction Events ──────────────────────────────────────────────────────
|
|
137
|
+
|
|
138
|
+
export interface InventoryTransactionCreated extends DomainEvent {
|
|
139
|
+
eventType: "InventoryTransactionCreated";
|
|
140
|
+
aggregateType: "InventoryItem";
|
|
141
|
+
itemId: string;
|
|
142
|
+
transactionType: InventoryTransactionType;
|
|
143
|
+
quantity: number;
|
|
144
|
+
quantityBefore: number;
|
|
145
|
+
quantityAfter: number;
|
|
146
|
+
unitCost?: number;
|
|
147
|
+
referenceId?: string;
|
|
148
|
+
notes?: string;
|
|
149
|
+
createdBy?: string;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export interface InventoryTransactionReversed extends DomainEvent {
|
|
153
|
+
eventType: "InventoryTransactionReversed";
|
|
154
|
+
aggregateType: "InventoryItem";
|
|
155
|
+
itemId: string;
|
|
156
|
+
/** ID of the original transaction being reversed. */
|
|
157
|
+
originalTransactionId: string;
|
|
158
|
+
transactionType: InventoryTransactionType;
|
|
159
|
+
quantity: number;
|
|
160
|
+
quantityBefore: number;
|
|
161
|
+
quantityAfter: number;
|
|
162
|
+
reason?: string;
|
|
163
|
+
reversedBy?: string;
|
|
164
|
+
reversedAt: Date;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// ─── Union Type ────────────────────────────────────────────────────────────────
|
|
168
|
+
|
|
169
|
+
export type InventoryEvent =
|
|
170
|
+
| InventoryItemCreated
|
|
171
|
+
| InventoryItemUpdated
|
|
172
|
+
| InventoryItemDeleted
|
|
173
|
+
| InventoryAdjusted
|
|
174
|
+
| InventoryConsumed
|
|
175
|
+
| InventoryReceived
|
|
176
|
+
| InventoryTransferred
|
|
177
|
+
| InventoryReturned
|
|
178
|
+
| InventoryExpired
|
|
179
|
+
| InventorySpoiled
|
|
180
|
+
| InventoryLowStock
|
|
181
|
+
| InventoryOutOfStock
|
|
182
|
+
| InventoryReplenished
|
|
183
|
+
| InventoryTransactionCreated
|
|
184
|
+
| InventoryTransactionReversed;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { DomainEvent } from "./DomainEvent";
|
|
2
|
+
import { IOrder } from "../../orders/domain/Order";
|
|
3
|
+
import { IOrderItem } from "../../orders/domain/OrderItem";
|
|
4
|
+
import { OrderStatus } from "../../orders/domain/Enums";
|
|
5
|
+
|
|
6
|
+
// ─── Lifecycle Events ──────────────────────────────────────────────────────────
|
|
7
|
+
|
|
8
|
+
export interface OrderCreated extends DomainEvent {
|
|
9
|
+
eventType: "OrderCreated";
|
|
10
|
+
aggregateType: "Order";
|
|
11
|
+
order: IOrder;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface OrderUpdated extends DomainEvent {
|
|
15
|
+
eventType: "OrderUpdated";
|
|
16
|
+
aggregateType: "Order";
|
|
17
|
+
before: Partial<IOrder>;
|
|
18
|
+
after: Partial<IOrder>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface OrderSubmitted extends DomainEvent {
|
|
22
|
+
eventType: "OrderSubmitted";
|
|
23
|
+
aggregateType: "Order";
|
|
24
|
+
submittedAt: Date;
|
|
25
|
+
submittedBy?: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface OrderConfirmed extends DomainEvent {
|
|
29
|
+
eventType: "OrderConfirmed";
|
|
30
|
+
aggregateType: "Order";
|
|
31
|
+
confirmedAt: Date;
|
|
32
|
+
confirmedBy?: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface OrderRejected extends DomainEvent {
|
|
36
|
+
eventType: "OrderRejected";
|
|
37
|
+
aggregateType: "Order";
|
|
38
|
+
reason?: string;
|
|
39
|
+
rejectedAt: Date;
|
|
40
|
+
rejectedBy?: string;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface OrderCancelled extends DomainEvent {
|
|
44
|
+
eventType: "OrderCancelled";
|
|
45
|
+
aggregateType: "Order";
|
|
46
|
+
previousStatus: OrderStatus;
|
|
47
|
+
reason?: string;
|
|
48
|
+
cancelledAt: Date;
|
|
49
|
+
cancelledBy?: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface OrderCompleted extends DomainEvent {
|
|
53
|
+
eventType: "OrderCompleted";
|
|
54
|
+
aggregateType: "Order";
|
|
55
|
+
completedAt: Date;
|
|
56
|
+
completedBy?: string;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface OrderReopened extends DomainEvent {
|
|
60
|
+
eventType: "OrderReopened";
|
|
61
|
+
aggregateType: "Order";
|
|
62
|
+
previousStatus: OrderStatus;
|
|
63
|
+
reason?: string;
|
|
64
|
+
reopenedAt: Date;
|
|
65
|
+
reopenedBy?: string;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface OrderClosed extends DomainEvent {
|
|
69
|
+
eventType: "OrderClosed";
|
|
70
|
+
aggregateType: "Order";
|
|
71
|
+
closedAt: Date;
|
|
72
|
+
closedBy?: string;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// ─── Order Item Events ────────────────────────────────────────────────────────
|
|
76
|
+
|
|
77
|
+
export interface OrderItemAdded extends DomainEvent {
|
|
78
|
+
eventType: "OrderItemAdded";
|
|
79
|
+
aggregateType: "Order";
|
|
80
|
+
item: IOrderItem;
|
|
81
|
+
addedBy?: string;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export interface OrderItemUpdated extends DomainEvent {
|
|
85
|
+
eventType: "OrderItemUpdated";
|
|
86
|
+
aggregateType: "Order";
|
|
87
|
+
before: Partial<IOrderItem>;
|
|
88
|
+
after: Partial<IOrderItem>;
|
|
89
|
+
updatedBy?: string;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export interface OrderItemRemoved extends DomainEvent {
|
|
93
|
+
eventType: "OrderItemRemoved";
|
|
94
|
+
aggregateType: "Order";
|
|
95
|
+
itemId: string;
|
|
96
|
+
reason?: string;
|
|
97
|
+
removedBy?: string;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface OrderItemPrepared extends DomainEvent {
|
|
101
|
+
eventType: "OrderItemPrepared";
|
|
102
|
+
aggregateType: "Order";
|
|
103
|
+
itemId: string;
|
|
104
|
+
preparedAt: Date;
|
|
105
|
+
preparedBy?: string;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export interface OrderItemServed extends DomainEvent {
|
|
109
|
+
eventType: "OrderItemServed";
|
|
110
|
+
aggregateType: "Order";
|
|
111
|
+
itemId: string;
|
|
112
|
+
servedAt: Date;
|
|
113
|
+
servedBy?: string;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export interface OrderItemVoided extends DomainEvent {
|
|
117
|
+
eventType: "OrderItemVoided";
|
|
118
|
+
aggregateType: "Order";
|
|
119
|
+
itemId: string;
|
|
120
|
+
reason?: string;
|
|
121
|
+
voidedAt: Date;
|
|
122
|
+
voidedBy?: string;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// ─── Union Type ────────────────────────────────────────────────────────────────
|
|
126
|
+
|
|
127
|
+
export type OrderEvent =
|
|
128
|
+
| OrderCreated
|
|
129
|
+
| OrderUpdated
|
|
130
|
+
| OrderSubmitted
|
|
131
|
+
| OrderConfirmed
|
|
132
|
+
| OrderRejected
|
|
133
|
+
| OrderCancelled
|
|
134
|
+
| OrderCompleted
|
|
135
|
+
| OrderReopened
|
|
136
|
+
| OrderClosed
|
|
137
|
+
| OrderItemAdded
|
|
138
|
+
| OrderItemUpdated
|
|
139
|
+
| OrderItemRemoved
|
|
140
|
+
| OrderItemPrepared
|
|
141
|
+
| OrderItemServed
|
|
142
|
+
| OrderItemVoided;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { DomainEvent } from "./DomainEvent";
|
|
2
|
+
import { IPayment } from "../../interfaces/domain/Payment";
|
|
3
|
+
import { PaymentMethod, PaymentStatus } from "../../enums/domain/Payments";
|
|
4
|
+
import { Money } from "../../interfaces/domain/Money";
|
|
5
|
+
|
|
6
|
+
// ─── Lifecycle Events ──────────────────────────────────────────────────────────
|
|
7
|
+
|
|
8
|
+
export interface PaymentCreated extends DomainEvent {
|
|
9
|
+
eventType: "PaymentCreated";
|
|
10
|
+
aggregateType: "Payment";
|
|
11
|
+
payment: IPayment;
|
|
12
|
+
orderId: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface PaymentAuthorized extends DomainEvent {
|
|
16
|
+
eventType: "PaymentAuthorized";
|
|
17
|
+
aggregateType: "Payment";
|
|
18
|
+
paymentId: string;
|
|
19
|
+
orderId: string;
|
|
20
|
+
amount: Money;
|
|
21
|
+
method: PaymentMethod;
|
|
22
|
+
authorizationCode?: string;
|
|
23
|
+
authorizedAt: Date;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface PaymentCaptured extends DomainEvent {
|
|
27
|
+
eventType: "PaymentCaptured";
|
|
28
|
+
aggregateType: "Payment";
|
|
29
|
+
paymentId: string;
|
|
30
|
+
orderId: string;
|
|
31
|
+
amount: Money;
|
|
32
|
+
capturedAt: Date;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface PaymentDeclined extends DomainEvent {
|
|
36
|
+
eventType: "PaymentDeclined";
|
|
37
|
+
aggregateType: "Payment";
|
|
38
|
+
paymentId: string;
|
|
39
|
+
orderId: string;
|
|
40
|
+
amount: Money;
|
|
41
|
+
method: PaymentMethod;
|
|
42
|
+
reason?: string;
|
|
43
|
+
declinedAt: Date;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface PaymentRefunded extends DomainEvent {
|
|
47
|
+
eventType: "PaymentRefunded";
|
|
48
|
+
aggregateType: "Payment";
|
|
49
|
+
paymentId: string;
|
|
50
|
+
orderId: string;
|
|
51
|
+
/** Amount refunded — may be partial. */
|
|
52
|
+
refundedAmount: Money;
|
|
53
|
+
/** Remaining balance after the refund. */
|
|
54
|
+
remainingAmount: Money;
|
|
55
|
+
reason?: string;
|
|
56
|
+
refundedBy?: string;
|
|
57
|
+
refundedAt: Date;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface PaymentVoided extends DomainEvent {
|
|
61
|
+
eventType: "PaymentVoided";
|
|
62
|
+
aggregateType: "Payment";
|
|
63
|
+
paymentId: string;
|
|
64
|
+
orderId: string;
|
|
65
|
+
previousStatus: PaymentStatus;
|
|
66
|
+
reason?: string;
|
|
67
|
+
voidedBy?: string;
|
|
68
|
+
voidedAt: Date;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface PaymentFailed extends DomainEvent {
|
|
72
|
+
eventType: "PaymentFailed";
|
|
73
|
+
aggregateType: "Payment";
|
|
74
|
+
paymentId: string;
|
|
75
|
+
orderId: string;
|
|
76
|
+
amount: Money;
|
|
77
|
+
method: PaymentMethod;
|
|
78
|
+
errorCode?: string;
|
|
79
|
+
errorMessage?: string;
|
|
80
|
+
failedAt: Date;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// ─── Union Type ────────────────────────────────────────────────────────────────
|
|
84
|
+
|
|
85
|
+
export type PaymentEvent =
|
|
86
|
+
| PaymentCreated
|
|
87
|
+
| PaymentAuthorized
|
|
88
|
+
| PaymentCaptured
|
|
89
|
+
| PaymentDeclined
|
|
90
|
+
| PaymentRefunded
|
|
91
|
+
| PaymentVoided
|
|
92
|
+
| PaymentFailed;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { DomainEvent } from "./DomainEvent";
|
|
2
|
+
import { IRecipe, IRecipeIngredient } from "../../interfaces/domain/Recipe";
|
|
3
|
+
|
|
4
|
+
// ─── Lifecycle Events ──────────────────────────────────────────────────────────
|
|
5
|
+
|
|
6
|
+
export interface RecipeCreated extends DomainEvent {
|
|
7
|
+
eventType: "RecipeCreated";
|
|
8
|
+
aggregateType: "Recipe";
|
|
9
|
+
recipe: IRecipe;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface RecipeUpdated extends DomainEvent {
|
|
13
|
+
eventType: "RecipeUpdated";
|
|
14
|
+
aggregateType: "Recipe";
|
|
15
|
+
before: Partial<IRecipe>;
|
|
16
|
+
after: Partial<IRecipe>;
|
|
17
|
+
/** Version number after the update. */
|
|
18
|
+
version: number;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface RecipeDeleted extends DomainEvent {
|
|
22
|
+
eventType: "RecipeDeleted";
|
|
23
|
+
aggregateType: "Recipe";
|
|
24
|
+
/** Snapshot of the recipe at the time of deletion. */
|
|
25
|
+
recipe: IRecipe;
|
|
26
|
+
deletedAt: Date;
|
|
27
|
+
deletedBy?: string;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// ─── Ingredient Events ─────────────────────────────────────────────────────────
|
|
31
|
+
|
|
32
|
+
export interface RecipeIngredientAdded extends DomainEvent {
|
|
33
|
+
eventType: "RecipeIngredientAdded";
|
|
34
|
+
aggregateType: "Recipe";
|
|
35
|
+
ingredient: IRecipeIngredient;
|
|
36
|
+
addedBy?: string;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface RecipeIngredientUpdated extends DomainEvent {
|
|
40
|
+
eventType: "RecipeIngredientUpdated";
|
|
41
|
+
aggregateType: "Recipe";
|
|
42
|
+
ingredientId: string;
|
|
43
|
+
before: Partial<IRecipeIngredient>;
|
|
44
|
+
after: Partial<IRecipeIngredient>;
|
|
45
|
+
updatedBy?: string;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface RecipeIngredientRemoved extends DomainEvent {
|
|
49
|
+
eventType: "RecipeIngredientRemoved";
|
|
50
|
+
aggregateType: "Recipe";
|
|
51
|
+
ingredientId: string;
|
|
52
|
+
reason?: string;
|
|
53
|
+
removedBy?: string;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// ─── Union Type ────────────────────────────────────────────────────────────────
|
|
57
|
+
|
|
58
|
+
export type RecipeEvent =
|
|
59
|
+
| RecipeCreated
|
|
60
|
+
| RecipeUpdated
|
|
61
|
+
| RecipeDeleted
|
|
62
|
+
| RecipeIngredientAdded
|
|
63
|
+
| RecipeIngredientUpdated
|
|
64
|
+
| RecipeIngredientRemoved;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { DomainEvent } from "./DomainEvent";
|
|
2
|
+
import { IReservation } from "../../interfaces/domain/Reservation";
|
|
3
|
+
import { ReservationStatus } from "../../enums/domain/Reservation";
|
|
4
|
+
|
|
5
|
+
// ─── Lifecycle Events ──────────────────────────────────────────────────────────
|
|
6
|
+
|
|
7
|
+
export interface ReservationCreated extends DomainEvent {
|
|
8
|
+
eventType: "ReservationCreated";
|
|
9
|
+
aggregateType: "Reservation";
|
|
10
|
+
reservation: IReservation;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface ReservationConfirmed extends DomainEvent {
|
|
14
|
+
eventType: "ReservationConfirmed";
|
|
15
|
+
aggregateType: "Reservation";
|
|
16
|
+
confirmedAt: Date;
|
|
17
|
+
confirmedBy?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface ReservationRejected extends DomainEvent {
|
|
21
|
+
eventType: "ReservationRejected";
|
|
22
|
+
aggregateType: "Reservation";
|
|
23
|
+
reason?: string;
|
|
24
|
+
rejectedAt: Date;
|
|
25
|
+
rejectedBy?: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface ReservationUpdated extends DomainEvent {
|
|
29
|
+
eventType: "ReservationUpdated";
|
|
30
|
+
aggregateType: "Reservation";
|
|
31
|
+
before: Partial<IReservation>;
|
|
32
|
+
after: Partial<IReservation>;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface ReservationCancelled extends DomainEvent {
|
|
36
|
+
eventType: "ReservationCancelled";
|
|
37
|
+
aggregateType: "Reservation";
|
|
38
|
+
reason?: string;
|
|
39
|
+
cancelledAt: Date;
|
|
40
|
+
cancelledBy?: string;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// ─── Floor Events ──────────────────────────────────────────────────────────────
|
|
44
|
+
|
|
45
|
+
export interface ReservationCheckedIn extends DomainEvent {
|
|
46
|
+
eventType: "ReservationCheckedIn";
|
|
47
|
+
aggregateType: "Reservation";
|
|
48
|
+
checkedInAt: Date;
|
|
49
|
+
checkedInBy?: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface ReservationSeated extends DomainEvent {
|
|
53
|
+
eventType: "ReservationSeated";
|
|
54
|
+
aggregateType: "Reservation";
|
|
55
|
+
tableIds: string[];
|
|
56
|
+
seatedAt: Date;
|
|
57
|
+
seatedBy?: string;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface ReservationCompleted extends DomainEvent {
|
|
61
|
+
eventType: "ReservationCompleted";
|
|
62
|
+
aggregateType: "Reservation";
|
|
63
|
+
completedAt: Date;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface ReservationNoShow extends DomainEvent {
|
|
67
|
+
eventType: "ReservationNoShow";
|
|
68
|
+
aggregateType: "Reservation";
|
|
69
|
+
markedAt: Date;
|
|
70
|
+
markedBy?: string;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// ─── Table Assignment Events ───────────────────────────────────────────────────
|
|
74
|
+
|
|
75
|
+
export interface ReservationTableAssigned extends DomainEvent {
|
|
76
|
+
eventType: "ReservationTableAssigned";
|
|
77
|
+
aggregateType: "Reservation";
|
|
78
|
+
tableIds: string[];
|
|
79
|
+
assignedBy?: string;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export interface ReservationTableChanged extends DomainEvent {
|
|
83
|
+
eventType: "ReservationTableChanged";
|
|
84
|
+
aggregateType: "Reservation";
|
|
85
|
+
previousTableIds: string[];
|
|
86
|
+
newTableIds: string[];
|
|
87
|
+
changedBy?: string;
|
|
88
|
+
reason?: string;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// ─── Waitlist Events ───────────────────────────────────────────────────────────
|
|
92
|
+
|
|
93
|
+
export interface WaitlistJoined extends DomainEvent {
|
|
94
|
+
eventType: "WaitlistJoined";
|
|
95
|
+
aggregateType: "Reservation";
|
|
96
|
+
partySize: number;
|
|
97
|
+
estimatedWaitMinutes?: number;
|
|
98
|
+
joinedAt: Date;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export interface WaitlistPromoted extends DomainEvent {
|
|
102
|
+
eventType: "WaitlistPromoted";
|
|
103
|
+
aggregateType: "Reservation";
|
|
104
|
+
tableIds: string[];
|
|
105
|
+
promotedAt: Date;
|
|
106
|
+
promotedBy?: string;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export interface WaitlistCancelled extends DomainEvent {
|
|
110
|
+
eventType: "WaitlistCancelled";
|
|
111
|
+
aggregateType: "Reservation";
|
|
112
|
+
reason?: string;
|
|
113
|
+
cancelledAt: Date;
|
|
114
|
+
cancelledBy?: string;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// ─── Union Type ────────────────────────────────────────────────────────────────
|
|
118
|
+
|
|
119
|
+
export type ReservationEvent =
|
|
120
|
+
| ReservationCreated
|
|
121
|
+
| ReservationConfirmed
|
|
122
|
+
| ReservationRejected
|
|
123
|
+
| ReservationUpdated
|
|
124
|
+
| ReservationCancelled
|
|
125
|
+
| ReservationCheckedIn
|
|
126
|
+
| ReservationSeated
|
|
127
|
+
| ReservationCompleted
|
|
128
|
+
| ReservationNoShow
|
|
129
|
+
| ReservationTableAssigned
|
|
130
|
+
| ReservationTableChanged
|
|
131
|
+
| WaitlistJoined
|
|
132
|
+
| WaitlistPromoted
|
|
133
|
+
| WaitlistCancelled;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { DomainEvent } from "./DomainEvent";
|
|
2
|
+
import { IRestaurant } from "../../interfaces/domain/Restaurant";
|
|
3
|
+
import { IAddress } from "../../interfaces/domain/Address";
|
|
4
|
+
import { OperatingHours } from "../../interfaces/domain/OpeningHours";
|
|
5
|
+
import { RestaurantStatus } from "../../enums/domain/Restaurant";
|
|
6
|
+
|
|
7
|
+
// ─── Lifecycle Events ──────────────────────────────────────────────────────────
|
|
8
|
+
|
|
9
|
+
export interface RestaurantCreated extends DomainEvent {
|
|
10
|
+
eventType: "RestaurantCreated";
|
|
11
|
+
aggregateType: "Restaurant";
|
|
12
|
+
restaurant: IRestaurant;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface RestaurantUpdated extends DomainEvent {
|
|
16
|
+
eventType: "RestaurantUpdated";
|
|
17
|
+
aggregateType: "Restaurant";
|
|
18
|
+
before: Partial<IRestaurant>;
|
|
19
|
+
after: Partial<IRestaurant>;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface RestaurantActivated extends DomainEvent {
|
|
23
|
+
eventType: "RestaurantActivated";
|
|
24
|
+
aggregateType: "Restaurant";
|
|
25
|
+
previousStatus: RestaurantStatus;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface RestaurantSuspended extends DomainEvent {
|
|
29
|
+
eventType: "RestaurantSuspended";
|
|
30
|
+
aggregateType: "Restaurant";
|
|
31
|
+
previousStatus: RestaurantStatus;
|
|
32
|
+
reason?: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface RestaurantClosed extends DomainEvent {
|
|
36
|
+
eventType: "RestaurantClosed";
|
|
37
|
+
aggregateType: "Restaurant";
|
|
38
|
+
previousStatus: RestaurantStatus;
|
|
39
|
+
reason?: string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface RestaurantDeleted extends DomainEvent {
|
|
43
|
+
eventType: "RestaurantDeleted";
|
|
44
|
+
aggregateType: "Restaurant";
|
|
45
|
+
deletedAt: Date;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// ─── Operational Events ────────────────────────────────────────────────────────
|
|
49
|
+
|
|
50
|
+
export interface RestaurantHoursUpdated extends DomainEvent {
|
|
51
|
+
eventType: "RestaurantHoursUpdated";
|
|
52
|
+
aggregateType: "Restaurant";
|
|
53
|
+
before: OperatingHours[];
|
|
54
|
+
after: OperatingHours[];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export interface RestaurantLocationUpdated extends DomainEvent {
|
|
58
|
+
eventType: "RestaurantLocationUpdated";
|
|
59
|
+
aggregateType: "Restaurant";
|
|
60
|
+
before: IAddress;
|
|
61
|
+
after: IAddress;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface RestaurantCapacityChanged extends DomainEvent {
|
|
65
|
+
eventType: "RestaurantCapacityChanged";
|
|
66
|
+
aggregateType: "Restaurant";
|
|
67
|
+
previousCapacity: number;
|
|
68
|
+
newCapacity: number;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface RestaurantSettingsUpdated extends DomainEvent {
|
|
72
|
+
eventType: "RestaurantSettingsUpdated";
|
|
73
|
+
aggregateType: "Restaurant";
|
|
74
|
+
settings: Record<string, unknown>;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// ─── Union Type ────────────────────────────────────────────────────────────────
|
|
78
|
+
|
|
79
|
+
export type RestaurantEvent =
|
|
80
|
+
| RestaurantCreated
|
|
81
|
+
| RestaurantUpdated
|
|
82
|
+
| RestaurantActivated
|
|
83
|
+
| RestaurantSuspended
|
|
84
|
+
| RestaurantClosed
|
|
85
|
+
| RestaurantDeleted
|
|
86
|
+
| RestaurantHoursUpdated
|
|
87
|
+
| RestaurantLocationUpdated
|
|
88
|
+
| RestaurantCapacityChanged
|
|
89
|
+
| RestaurantSettingsUpdated;
|