@reventlessdev/online-shop-aggregates-ordering 3.0.0-alpha.237 → 3.0.0-alpha.239

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.
Files changed (194) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/lib/bs/.compiler.log +2 -2
  3. package/lib/bs/compiler-info.json +1 -1
  4. package/lib/bs/src/CatalogProduct/Aggregate/CatalogProduct-OrderingPlugin.cmi +0 -0
  5. package/lib/bs/src/CatalogProduct/Aggregate/CatalogProduct-OrderingPlugin.cmt +0 -0
  6. package/lib/bs/src/CatalogProduct/Aggregate/CatalogProduct_Behavior-OrderingPlugin.cmi +0 -0
  7. package/lib/bs/src/CatalogProduct/Aggregate/CatalogProduct_Behavior-OrderingPlugin.cmt +0 -0
  8. package/lib/bs/src/CatalogProduct/ReadModel/AvailableProducts-OrderingPlugin.cmi +0 -0
  9. package/lib/bs/src/CatalogProduct/ReadModel/AvailableProducts-OrderingPlugin.cmt +0 -0
  10. package/lib/bs/src/CatalogProduct/ReadModel/AvailableProducts.res +0 -1
  11. package/lib/bs/src/CatalogProduct/ReadModel/AvailableProducts_Projections-OrderingPlugin.cmi +0 -0
  12. package/lib/bs/src/CatalogProduct/ReadModel/AvailableProducts_Projections-OrderingPlugin.cmt +0 -0
  13. package/lib/bs/src/CatalogProduct/ReadModel/AvailableProducts_Projections.ast +0 -0
  14. package/lib/bs/src/CatalogProduct/ReadModel/AvailableProducts_Projections.res +2 -4
  15. package/lib/bs/src/Customer/Aggregate/Customer-OrderingPlugin.cmi +0 -0
  16. package/lib/bs/src/Customer/Aggregate/Customer-OrderingPlugin.cmt +0 -0
  17. package/lib/bs/src/Customer/Aggregate/Customer_Behavior-OrderingPlugin.cmi +0 -0
  18. package/lib/bs/src/Customer/Aggregate/Customer_Behavior-OrderingPlugin.cmt +0 -0
  19. package/lib/bs/src/Customer/ReadModel/Customers-OrderingPlugin.cmi +0 -0
  20. package/lib/bs/src/Customer/ReadModel/Customers-OrderingPlugin.cmt +0 -0
  21. package/lib/bs/src/Customer/ReadModel/Customers.res +0 -1
  22. package/lib/bs/src/Customer/ReadModel/Customers_Projections-OrderingPlugin.cmi +0 -0
  23. package/lib/bs/src/Customer/ReadModel/Customers_Projections-OrderingPlugin.cmt +0 -0
  24. package/lib/bs/src/Customer/ReadModel/Customers_Projections.ast +0 -0
  25. package/lib/bs/src/Customer/ReadModel/Customers_Projections.res +1 -2
  26. package/lib/bs/src/Extension/Products_Extension-OrderingPlugin.cmi +0 -0
  27. package/lib/bs/src/Extension/Products_Extension-OrderingPlugin.cmt +0 -0
  28. package/lib/bs/src/ExtensionPoint/Orders_ExtensionPointMapping-OrderingPlugin.cmi +0 -0
  29. package/lib/bs/src/ExtensionPoint/Orders_ExtensionPointMapping-OrderingPlugin.cmt +0 -0
  30. package/lib/bs/src/ExtensionPoint/Orders_ExtensionPointMapping.ast +0 -0
  31. package/lib/bs/src/ExtensionPoint/Orders_ExtensionPointMapping.res +11 -14
  32. package/lib/bs/src/LifecycleModel-OrderingPlugin.cmi +0 -0
  33. package/lib/bs/src/LifecycleModel-OrderingPlugin.cmt +0 -0
  34. package/lib/bs/src/LifecycleModel.ast +0 -0
  35. package/lib/bs/src/LifecycleModel.res +28 -4
  36. package/lib/bs/src/Order/Aggregate/Order-OrderingPlugin.cmi +0 -0
  37. package/lib/bs/src/Order/Aggregate/Order-OrderingPlugin.cmt +0 -0
  38. package/lib/bs/src/Order/Aggregate/Order_Behavior-OrderingPlugin.cmi +0 -0
  39. package/lib/bs/src/Order/Aggregate/Order_Behavior-OrderingPlugin.cmt +0 -0
  40. package/lib/bs/src/Order/Aggregate/Order_Behavior.ast +0 -0
  41. package/lib/bs/src/Order/Aggregate/Order_Behavior.res +1 -2
  42. package/lib/bs/src/Order/Aggregate/Order_Mappings-OrderingPlugin.cmi +0 -0
  43. package/lib/bs/src/Order/Aggregate/Order_Mappings-OrderingPlugin.cmt +0 -0
  44. package/lib/bs/src/Order/ReadModel/Orders-OrderingPlugin.cmi +0 -0
  45. package/lib/bs/src/Order/ReadModel/Orders-OrderingPlugin.cmt +0 -0
  46. package/lib/bs/src/Order/ReadModel/Orders.res +0 -1
  47. package/lib/bs/src/Order/ReadModel/Orders_Projections-OrderingPlugin.cmi +0 -0
  48. package/lib/bs/src/Order/ReadModel/Orders_Projections-OrderingPlugin.cmt +0 -0
  49. package/lib/bs/src/Order/ReadModel/Orders_Projections.ast +0 -0
  50. package/lib/bs/src/Order/ReadModel/Orders_Projections.res +4 -7
  51. package/lib/bs/src/Order/SideEffect/Order_EmailNotification-OrderingPlugin.cmi +0 -0
  52. package/lib/bs/src/Order/SideEffect/Order_EmailNotification-OrderingPlugin.cmt +0 -0
  53. package/lib/bs/src/Order/SideEffect/Order_EmailNotification.ast +0 -0
  54. package/lib/bs/src/Order/SideEffect/Order_EmailNotification.res +1 -4
  55. package/lib/bs/src/Plugin-OrderingPlugin.cmi +0 -0
  56. package/lib/bs/src/Plugin-OrderingPlugin.cmt +0 -0
  57. package/lib/bs/src/Plugin.ast +0 -0
  58. package/lib/bs/src/Plugin.res +34 -12
  59. package/lib/bs/src/Task/OrderNotifications-OrderingPlugin.cmi +0 -0
  60. package/lib/bs/src/Task/OrderNotifications-OrderingPlugin.cmt +0 -0
  61. package/lib/bs/src/Task/OrderNotifications.ast +0 -0
  62. package/lib/bs/src/Task/OrderNotifications.res +1 -1
  63. package/lib/bs/tests/CatalogProduct/Aggregate/CatalogProduct_GWT-OrderingPlugin.cmi +0 -0
  64. package/lib/bs/tests/CatalogProduct/Aggregate/CatalogProduct_GWT-OrderingPlugin.cmt +0 -0
  65. package/lib/bs/tests/CatalogProduct/ReadModel/AvailableProducts_GWT-OrderingPlugin.cmi +0 -0
  66. package/lib/bs/tests/CatalogProduct/ReadModel/AvailableProducts_GWT-OrderingPlugin.cmt +0 -0
  67. package/lib/bs/tests/Customer/Aggregate/Customer_GWT-OrderingPlugin.cmi +0 -0
  68. package/lib/bs/tests/Customer/Aggregate/Customer_GWT-OrderingPlugin.cmt +0 -0
  69. package/lib/bs/tests/Customer/Aggregate/Customer_GWT.ast +0 -0
  70. package/lib/bs/tests/Customer/Aggregate/Customer_GWT.res +3 -12
  71. package/lib/bs/tests/Customer/ReadModel/Customers_GWT-OrderingPlugin.cmi +0 -0
  72. package/lib/bs/tests/Customer/ReadModel/Customers_GWT-OrderingPlugin.cmt +0 -0
  73. package/lib/bs/tests/Extension/Products_Extension_GWT-OrderingPlugin.cmi +0 -0
  74. package/lib/bs/tests/Extension/Products_Extension_GWT-OrderingPlugin.cmt +0 -0
  75. package/lib/bs/tests/ExtensionPoint/Orders_ExtensionPointMapping_GWT-OrderingPlugin.cmi +0 -0
  76. package/lib/bs/tests/ExtensionPoint/Orders_ExtensionPointMapping_GWT-OrderingPlugin.cmt +0 -0
  77. package/lib/bs/tests/ExtensionPoint/Orders_ExtensionPointMapping_GWT.ast +0 -0
  78. package/lib/bs/tests/ExtensionPoint/Orders_ExtensionPointMapping_GWT.res +3 -9
  79. package/lib/bs/tests/Order/Aggregate/OrderMappings_GWT-OrderingPlugin.cmi +0 -0
  80. package/lib/bs/tests/Order/Aggregate/OrderMappings_GWT-OrderingPlugin.cmt +0 -0
  81. package/lib/bs/tests/Order/Aggregate/OrderMappings_GWT.ast +0 -0
  82. package/lib/bs/tests/Order/Aggregate/OrderMappings_GWT.res +1 -3
  83. package/lib/bs/tests/Order/Aggregate/Order_GWT-OrderingPlugin.cmi +0 -0
  84. package/lib/bs/tests/Order/Aggregate/Order_GWT-OrderingPlugin.cmt +0 -0
  85. package/lib/bs/tests/Order/ReadModel/Orders_GWT-OrderingPlugin.cmi +0 -0
  86. package/lib/bs/tests/Order/ReadModel/Orders_GWT-OrderingPlugin.cmt +0 -0
  87. package/lib/bs/tests/Order/SideEffect/EmailService_Mock-OrderingPlugin.cmi +0 -0
  88. package/lib/bs/tests/Order/SideEffect/EmailService_Mock-OrderingPlugin.cmt +0 -0
  89. package/lib/bs/tests/Order/SideEffect/Order_EmailNotification_GWT-OrderingPlugin.cmi +0 -0
  90. package/lib/bs/tests/Order/SideEffect/Order_EmailNotification_GWT-OrderingPlugin.cmt +0 -0
  91. package/lib/ocaml/.compiler.log +2 -2
  92. package/lib/ocaml/AvailableProducts-OrderingPlugin.cmi +0 -0
  93. package/lib/ocaml/AvailableProducts-OrderingPlugin.cmt +0 -0
  94. package/lib/ocaml/AvailableProducts.res +0 -1
  95. package/lib/ocaml/AvailableProducts_GWT-OrderingPlugin.cmi +0 -0
  96. package/lib/ocaml/AvailableProducts_GWT-OrderingPlugin.cmt +0 -0
  97. package/lib/ocaml/AvailableProducts_Projections-OrderingPlugin.cmi +0 -0
  98. package/lib/ocaml/AvailableProducts_Projections-OrderingPlugin.cmt +0 -0
  99. package/lib/ocaml/AvailableProducts_Projections.ast +0 -0
  100. package/lib/ocaml/AvailableProducts_Projections.res +2 -4
  101. package/lib/ocaml/CatalogProduct-OrderingPlugin.cmi +0 -0
  102. package/lib/ocaml/CatalogProduct-OrderingPlugin.cmt +0 -0
  103. package/lib/ocaml/CatalogProduct_Behavior-OrderingPlugin.cmi +0 -0
  104. package/lib/ocaml/CatalogProduct_Behavior-OrderingPlugin.cmt +0 -0
  105. package/lib/ocaml/CatalogProduct_GWT-OrderingPlugin.cmi +0 -0
  106. package/lib/ocaml/CatalogProduct_GWT-OrderingPlugin.cmt +0 -0
  107. package/lib/ocaml/Customer-OrderingPlugin.cmi +0 -0
  108. package/lib/ocaml/Customer-OrderingPlugin.cmt +0 -0
  109. package/lib/ocaml/Customer_Behavior-OrderingPlugin.cmi +0 -0
  110. package/lib/ocaml/Customer_Behavior-OrderingPlugin.cmt +0 -0
  111. package/lib/ocaml/Customer_GWT-OrderingPlugin.cmi +0 -0
  112. package/lib/ocaml/Customer_GWT-OrderingPlugin.cmt +0 -0
  113. package/lib/ocaml/Customer_GWT.ast +0 -0
  114. package/lib/ocaml/Customer_GWT.res +3 -12
  115. package/lib/ocaml/Customers-OrderingPlugin.cmi +0 -0
  116. package/lib/ocaml/Customers-OrderingPlugin.cmt +0 -0
  117. package/lib/ocaml/Customers.res +0 -1
  118. package/lib/ocaml/Customers_GWT-OrderingPlugin.cmi +0 -0
  119. package/lib/ocaml/Customers_GWT-OrderingPlugin.cmt +0 -0
  120. package/lib/ocaml/Customers_Projections-OrderingPlugin.cmi +0 -0
  121. package/lib/ocaml/Customers_Projections-OrderingPlugin.cmt +0 -0
  122. package/lib/ocaml/Customers_Projections.ast +0 -0
  123. package/lib/ocaml/Customers_Projections.res +1 -2
  124. package/lib/ocaml/EmailService_Mock-OrderingPlugin.cmi +0 -0
  125. package/lib/ocaml/EmailService_Mock-OrderingPlugin.cmt +0 -0
  126. package/lib/ocaml/LifecycleModel-OrderingPlugin.cmi +0 -0
  127. package/lib/ocaml/LifecycleModel-OrderingPlugin.cmt +0 -0
  128. package/lib/ocaml/LifecycleModel.ast +0 -0
  129. package/lib/ocaml/LifecycleModel.res +28 -4
  130. package/lib/ocaml/Order-OrderingPlugin.cmi +0 -0
  131. package/lib/ocaml/Order-OrderingPlugin.cmt +0 -0
  132. package/lib/ocaml/OrderMappings_GWT-OrderingPlugin.cmi +0 -0
  133. package/lib/ocaml/OrderMappings_GWT-OrderingPlugin.cmt +0 -0
  134. package/lib/ocaml/OrderMappings_GWT.ast +0 -0
  135. package/lib/ocaml/OrderMappings_GWT.res +1 -3
  136. package/lib/ocaml/OrderNotifications-OrderingPlugin.cmi +0 -0
  137. package/lib/ocaml/OrderNotifications-OrderingPlugin.cmt +0 -0
  138. package/lib/ocaml/OrderNotifications.ast +0 -0
  139. package/lib/ocaml/OrderNotifications.res +1 -1
  140. package/lib/ocaml/Order_Behavior-OrderingPlugin.cmi +0 -0
  141. package/lib/ocaml/Order_Behavior-OrderingPlugin.cmt +0 -0
  142. package/lib/ocaml/Order_Behavior.ast +0 -0
  143. package/lib/ocaml/Order_Behavior.res +1 -2
  144. package/lib/ocaml/Order_EmailNotification-OrderingPlugin.cmi +0 -0
  145. package/lib/ocaml/Order_EmailNotification-OrderingPlugin.cmt +0 -0
  146. package/lib/ocaml/Order_EmailNotification.ast +0 -0
  147. package/lib/ocaml/Order_EmailNotification.res +1 -4
  148. package/lib/ocaml/Order_EmailNotification_GWT-OrderingPlugin.cmi +0 -0
  149. package/lib/ocaml/Order_EmailNotification_GWT-OrderingPlugin.cmt +0 -0
  150. package/lib/ocaml/Order_GWT-OrderingPlugin.cmi +0 -0
  151. package/lib/ocaml/Order_GWT-OrderingPlugin.cmt +0 -0
  152. package/lib/ocaml/Order_Mappings-OrderingPlugin.cmi +0 -0
  153. package/lib/ocaml/Order_Mappings-OrderingPlugin.cmt +0 -0
  154. package/lib/ocaml/Orders-OrderingPlugin.cmi +0 -0
  155. package/lib/ocaml/Orders-OrderingPlugin.cmt +0 -0
  156. package/lib/ocaml/Orders.res +0 -1
  157. package/lib/ocaml/Orders_ExtensionPointMapping-OrderingPlugin.cmi +0 -0
  158. package/lib/ocaml/Orders_ExtensionPointMapping-OrderingPlugin.cmt +0 -0
  159. package/lib/ocaml/Orders_ExtensionPointMapping.ast +0 -0
  160. package/lib/ocaml/Orders_ExtensionPointMapping.res +11 -14
  161. package/lib/ocaml/Orders_ExtensionPointMapping_GWT-OrderingPlugin.cmi +0 -0
  162. package/lib/ocaml/Orders_ExtensionPointMapping_GWT-OrderingPlugin.cmt +0 -0
  163. package/lib/ocaml/Orders_ExtensionPointMapping_GWT.ast +0 -0
  164. package/lib/ocaml/Orders_ExtensionPointMapping_GWT.res +3 -9
  165. package/lib/ocaml/Orders_GWT-OrderingPlugin.cmi +0 -0
  166. package/lib/ocaml/Orders_GWT-OrderingPlugin.cmt +0 -0
  167. package/lib/ocaml/Orders_Projections-OrderingPlugin.cmi +0 -0
  168. package/lib/ocaml/Orders_Projections-OrderingPlugin.cmt +0 -0
  169. package/lib/ocaml/Orders_Projections.ast +0 -0
  170. package/lib/ocaml/Orders_Projections.res +4 -7
  171. package/lib/ocaml/Plugin-OrderingPlugin.cmi +0 -0
  172. package/lib/ocaml/Plugin-OrderingPlugin.cmt +0 -0
  173. package/lib/ocaml/Plugin.ast +0 -0
  174. package/lib/ocaml/Plugin.res +34 -12
  175. package/lib/ocaml/Products_Extension-OrderingPlugin.cmi +0 -0
  176. package/lib/ocaml/Products_Extension-OrderingPlugin.cmt +0 -0
  177. package/lib/ocaml/Products_Extension_GWT-OrderingPlugin.cmi +0 -0
  178. package/lib/ocaml/Products_Extension_GWT-OrderingPlugin.cmt +0 -0
  179. package/package.json +9 -9
  180. package/src/CatalogProduct/ReadModel/AvailableProducts.res +0 -1
  181. package/src/CatalogProduct/ReadModel/AvailableProducts_Projections.res +2 -4
  182. package/src/Customer/ReadModel/Customers.res +0 -1
  183. package/src/Customer/ReadModel/Customers_Projections.res +1 -2
  184. package/src/ExtensionPoint/Orders_ExtensionPointMapping.res +11 -14
  185. package/src/LifecycleModel.res +28 -4
  186. package/src/Order/Aggregate/Order_Behavior.res +1 -2
  187. package/src/Order/ReadModel/Orders.res +0 -1
  188. package/src/Order/ReadModel/Orders_Projections.res +4 -7
  189. package/src/Order/SideEffect/Order_EmailNotification.res +1 -4
  190. package/src/Plugin.res +34 -12
  191. package/src/Task/OrderNotifications.res +1 -1
  192. package/tests/Customer/Aggregate/Customer_GWT.res +3 -12
  193. package/tests/ExtensionPoint/Orders_ExtensionPointMapping_GWT.res +3 -9
  194. package/tests/Order/Aggregate/OrderMappings_GWT.res +1 -3
package/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # 3.0.0-alpha.239 (2026-09-09)
7
+
8
+ **Note:** Version bump only for package @reventlessdev/online-shop-aggregates-ordering
9
+
10
+
11
+
12
+
13
+
14
+ # 3.0.0-alpha.238 (2026-09-08)
15
+
16
+ **Note:** Version bump only for package @reventlessdev/online-shop-aggregates-ordering
17
+
18
+
19
+
20
+
21
+
6
22
  # 3.0.0-alpha.237 (2026-09-08)
7
23
 
8
24
  **Note:** Version bump only for package @reventlessdev/online-shop-aggregates-ordering
@@ -1,2 +1,2 @@
1
- #Start(1788849058573)
2
- #Done(1788849064855)
1
+ #Start(1788992654955)
2
+ #Done(1788992660649)
@@ -4,5 +4,5 @@
4
4
  "bsc_hash": "75e3a59c95cc953608fd3dd6ea6ed68141bba4414a20a52f114261b8a48385fa",
5
5
  "rescript_config_hash": "4c884bf958b93b21c77764e35498f269b81377cfcc324135f1ab7a1cc5b569cb",
6
6
  "runtime_path": "/home/runner/work/reventless-core/reventless-core/node_modules/@rescript/runtime",
7
- "generated_at": "1788849064862"
7
+ "generated_at": "1788992660655"
8
8
  }
@@ -10,4 +10,3 @@
10
10
 
11
11
  @schema
12
12
  type state = {name: string, price: float}
13
-
@@ -9,10 +9,8 @@ module CatalogProductMapping = Mapping.Make(
9
9
  open CatalogProduct
10
10
  let project = ({event, id, _}) =>
11
11
  switch event {
12
- | Synced({name, price}) =>
13
- Set(id, {AvailableProducts.name: name, price})
14
- | PriceUpdated({price}) =>
15
- Update(id, state => {...state, price})
12
+ | Synced({name, price}) => Set(id, {AvailableProducts.name, price})
13
+ | PriceUpdated({price}) => Update(id, state => {...state, price})
16
14
  }
17
15
  },
18
16
  )
@@ -12,4 +12,3 @@ type state = {
12
12
  address: string,
13
13
  deactivated: bool,
14
14
  }
15
-
@@ -9,8 +9,7 @@ module CustomerMapping = Mapping.Make(
9
9
  open Customer
10
10
  let project = ({event, id, _}) =>
11
11
  switch event {
12
- | Registered({email, address}) =>
13
- Set(id, {Customers.email: email, address, deactivated: false})
12
+ | Registered({email, address}) => Set(id, {Customers.email, address, deactivated: false})
14
13
  | EmailUpdated({email}) => Update(id, state => {...state, email})
15
14
  | AddressUpdated({address}) => Update(id, state => {...state, address})
16
15
  | Deactivated => Update(id, state => {...state, deactivated: true})
@@ -7,22 +7,19 @@ module Delegate = Order
7
7
 
8
8
  let mapIncomingCommand = (_id, _command, _meta) => []
9
9
 
10
- let mapOutgoingEvent = Some((_id, event, _meta, _queryEngine) =>
11
- switch event {
12
- | Order.Placed({customerId, productIds}) =>
13
- productIds->Array.map(productId =>
14
- PublishEvent(
10
+ let mapOutgoingEvent = Some(
11
+ (_id, event, _meta, _queryEngine) =>
12
+ switch event {
13
+ | Order.Placed({customerId, productIds}) =>
14
+ productIds->Array.map(productId => PublishEvent(
15
15
  productId,
16
16
  OrderingSpec.Orders_ExtensionPoint.ItemOrdered({productId, orderId: _id, customerId}),
17
- )
18
- )
19
- | Order.Cancelled({productIds}) =>
20
- productIds->Array.map(productId =>
21
- PublishEvent(
17
+ ))
18
+ | Order.Cancelled({productIds}) =>
19
+ productIds->Array.map(productId => PublishEvent(
22
20
  productId,
23
21
  OrderingSpec.Orders_ExtensionPoint.ItemOrderCancelled({productId, orderId: _id}),
24
- )
25
- )
26
- | _ => []
27
- }
22
+ ))
23
+ | _ => []
24
+ },
28
25
  )
Binary file
@@ -7,8 +7,32 @@
7
7
  // annotation where it is silent.
8
8
 
9
9
  let model: array<Reventless.Plugin.derivedEdge> = [
10
- {component: "Order", command: "Cancel", level: Reventless.Plugin.Instance, allowedStates: ["Placed"], targets: ["Cancelled"]},
11
- {component: "Order", command: "Place", level: Reventless.Plugin.Collection, allowedStates: [], targets: ["Placed"]},
12
- {component: "Order", command: "Refund", level: Reventless.Plugin.Instance, allowedStates: ["Cancelled"], targets: ["Refunded"]},
13
- {component: "Order", command: "Ship", level: Reventless.Plugin.Instance, allowedStates: ["Placed"], targets: ["Shipped"]},
10
+ {
11
+ component: "Order",
12
+ command: "Cancel",
13
+ level: Reventless.Plugin.Instance,
14
+ allowedStates: ["Placed"],
15
+ targets: ["Cancelled"],
16
+ },
17
+ {
18
+ component: "Order",
19
+ command: "Place",
20
+ level: Reventless.Plugin.Collection,
21
+ allowedStates: [],
22
+ targets: ["Placed"],
23
+ },
24
+ {
25
+ component: "Order",
26
+ command: "Refund",
27
+ level: Reventless.Plugin.Instance,
28
+ allowedStates: ["Cancelled"],
29
+ targets: ["Refunded"],
30
+ },
31
+ {
32
+ component: "Order",
33
+ command: "Ship",
34
+ level: Reventless.Plugin.Instance,
35
+ allowedStates: ["Placed"],
36
+ targets: ["Shipped"],
37
+ },
14
38
  ]
@@ -29,8 +29,7 @@ let evolve = (state, event) =>
29
29
 
30
30
  let decide = (state, command) =>
31
31
  switch (state, command) {
32
- | (NotCreated, Place({customerId, productIds})) =>
33
- Ok([Order.Placed({customerId, productIds})])
32
+ | (NotCreated, Place({customerId, productIds})) => Ok([Order.Placed({customerId, productIds})])
34
33
  | (NotCreated, Ship) => Error(OrderNotFound)
35
34
  | (NotCreated, Cancel) => Error(OrderNotFound)
36
35
  | (NotCreated, Refund(_)) => Error(OrderNotFound)
@@ -18,4 +18,3 @@ type state = {
18
18
  // records whose lifecycle field is honestly called something else.
19
19
  lifecycle: lifecycle,
20
20
  }
21
-
@@ -13,17 +13,14 @@ module OrderMapping = Mapping.Make(
13
13
  Set(
14
14
  id,
15
15
  {
16
- Orders.customerId: customerId,
16
+ Orders.customerId,
17
17
  productIds,
18
18
  lifecycle: (Placed: Orders.lifecycle),
19
19
  },
20
20
  )
21
- | Shipped =>
22
- Update(id, state => {...state, lifecycle: (Shipped: Orders.lifecycle)})
23
- | Cancelled(_) =>
24
- Update(id, state => {...state, lifecycle: (Cancelled: Orders.lifecycle)})
25
- | Refunded(_) =>
26
- Update(id, state => {...state, lifecycle: (Refunded: Orders.lifecycle)})
21
+ | Shipped => Update(id, state => {...state, lifecycle: (Shipped: Orders.lifecycle)})
22
+ | Cancelled(_) => Update(id, state => {...state, lifecycle: (Cancelled: Orders.lifecycle)})
23
+ | Refunded(_) => Update(id, state => {...state, lifecycle: (Refunded: Orders.lifecycle)})
27
24
  }
28
25
  },
29
26
  )
@@ -10,9 +10,6 @@ module Source = {
10
10
  let execute = async (orderId, _meta, event, _queryEngine) =>
11
11
  switch event {
12
12
  | Order.Placed({customerId}) =>
13
- await EmailService.sendOrderConfirmation(
14
- ~email=customerId,
15
- ~orderId=orderId->Order.Id.toString,
16
- )
13
+ await EmailService.sendOrderConfirmation(~email=customerId, ~orderId=orderId->Order.Id.toString)
17
14
  | _ => ()
18
15
  }
Binary file
@@ -14,14 +14,13 @@ module Make = (Platform: ReventlessInfra.Platform.T) => {
14
14
  Customer_Behavior,
15
15
  ReventlessInfra.NoEventMappings.Make(Customer),
16
16
  )
17
- module OrderAggregate = Platform.Aggregate.Make(
18
- Order,
19
- Order_Behavior,
20
- Order_Mappings,
21
- )
17
+ module OrderAggregate = Platform.Aggregate.Make(Order, Order_Behavior, Order_Mappings)
22
18
 
23
19
  // ReadModels
24
- module AvailableProductsReadModel = Platform.ReadModel.Make(AvailableProducts, AvailableProducts_Projections)
20
+ module AvailableProductsReadModel = Platform.ReadModel.Make(
21
+ AvailableProducts,
22
+ AvailableProducts_Projections,
23
+ )
25
24
  module CustomersReadModel = Platform.ReadModel.Make(Customers, Customers_Projections)
26
25
  module OrdersReadModel = Platform.ReadModel.Make(Orders, Orders_Projections)
27
26
 
@@ -36,11 +35,26 @@ module Make = (Platform: ReventlessInfra.Platform.T) => {
36
35
 
37
36
  let pluginStructure = Platform.Plugin.makePluginDefinition(
38
37
  ~name="Ordering",
39
- ~aggregates=[module(CatalogProductAggregate), module(CustomerAggregate), module(OrderAggregate)],
40
- ~readModels=[module(AvailableProductsReadModel), module(CustomersReadModel), module(OrdersReadModel)],
38
+ ~aggregates=[
39
+ module(CatalogProductAggregate),
40
+ module(CustomerAggregate),
41
+ module(OrderAggregate),
42
+ ],
43
+ ~readModels=[
44
+ module(AvailableProductsReadModel),
45
+ module(CustomersReadModel),
46
+ module(OrdersReadModel),
47
+ ],
41
48
  ~extensions=[module(Products_Extension)],
42
49
  ~extensionPoints=[module(Orders_ExtensionPointMapping)],
43
- ~componentChapters=Dict.fromArray([("AvailableProducts", "CatalogProduct"), ("CatalogProduct", "CatalogProduct"), ("Customer", "Customer"), ("Customers", "Customer"), ("Order", "Order"), ("Orders", "Order")]),
50
+ ~componentChapters=Dict.fromArray([
51
+ ("AvailableProducts", "CatalogProduct"),
52
+ ("CatalogProduct", "CatalogProduct"),
53
+ ("Customer", "Customer"),
54
+ ("Customers", "Customer"),
55
+ ("Order", "Order"),
56
+ ("Orders", "Order"),
57
+ ]),
44
58
  ~lifecycleModel=LifecycleModel.model,
45
59
  )
46
60
 
@@ -50,10 +64,18 @@ module Make = (Platform: ReventlessInfra.Platform.T) => {
50
64
  ~heartbeatInterval=5,
51
65
  ~extensionPoints=[module(Orders_ExtensionPoint)],
52
66
  ~extensions=[module(Products_Extension)],
53
- ~aggregates=[module(CatalogProductAggregate), module(CustomerAggregate), module(OrderAggregate)],
54
- ~readModels=[module(AvailableProductsReadModel), module(CustomersReadModel), module(OrdersReadModel)],
67
+ ~aggregates=[
68
+ module(CatalogProductAggregate),
69
+ module(CustomerAggregate),
70
+ module(OrderAggregate),
71
+ ],
72
+ ~readModels=[
73
+ module(AvailableProductsReadModel),
74
+ module(CustomersReadModel),
75
+ module(OrdersReadModel),
76
+ ],
55
77
  ~tasks=[module(OrderNotificationsTask)],
56
- ~pluginStructure=pluginStructure,
78
+ ~pluginStructure,
57
79
  ~uiFragments=?uiBundleUrl->Option.map(url =>
58
80
  Platform.Plugin.makeAutoUIManifest(
59
81
  ~remoteEntryUrl=url,
@@ -4,5 +4,5 @@
4
4
  @@reventless.task
5
5
 
6
6
  let setup = (_queryEngine, _queryBucketName, _opts) => {
7
- Task.sideEffects: [module(Order_EmailNotification): module(SideEffect.T)],
7
+ Task.sideEffects: [module(Order_EmailNotification: SideEffect.T)],
8
8
  }
@@ -14,10 +14,7 @@ describe("Customer Behavior", () => {
14
14
  )
15
15
 
16
16
  test("Register on deactivated aggregate returns CustomerAlreadyDeactivated", () =>
17
- givenEvents([
18
- Registered({email: "alice@example.com", address: "123 Main St"}),
19
- Deactivated,
20
- ])
17
+ givenEvents([Registered({email: "alice@example.com", address: "123 Main St"}), Deactivated])
21
18
  ->whenCmd(Register({email: "bob@example.com", address: "456 Oak Ave"}))
22
19
  ->thenError(CustomerAlreadyDeactivated)
23
20
  )
@@ -41,10 +38,7 @@ describe("Customer Behavior", () => {
41
38
  )
42
39
 
43
40
  test("UpdateEmail on deactivated customer returns CustomerAlreadyDeactivated", () =>
44
- givenEvents([
45
- Registered({email: "alice@example.com", address: "123 Main St"}),
46
- Deactivated,
47
- ])
41
+ givenEvents([Registered({email: "alice@example.com", address: "123 Main St"}), Deactivated])
48
42
  ->whenCmd(UpdateEmail({email: "bob@example.com"}))
49
43
  ->thenError(CustomerAlreadyDeactivated)
50
44
  )
@@ -80,10 +74,7 @@ describe("Customer Behavior", () => {
80
74
  )
81
75
 
82
76
  test("Deactivate on deactivated customer produces no events (idempotent)", () =>
83
- givenEvents([
84
- Registered({email: "alice@example.com", address: "123 Main St"}),
85
- Deactivated,
86
- ])
77
+ givenEvents([Registered({email: "alice@example.com", address: "123 Main St"}), Deactivated])
87
78
  ->whenCmd(Deactivate)
88
79
  ->thenNoEvent
89
80
  )
@@ -13,21 +13,15 @@ describe("Orders ExtensionPoint mapping — per-product fan-out", () => {
13
13
  )
14
14
 
15
15
  test("Cancelled fans out to one ItemOrderCancelled per product", () =>
16
- whenDelegateEvent(
17
- Delegate.Cancelled({productIds: ["p1", "p2"]}),
18
- )->thenPublishesEvents([
16
+ whenDelegateEvent(Delegate.Cancelled({productIds: ["p1", "p2"]}))->thenPublishesEvents([
19
17
  ("p1", ExtensionPoint.ItemOrderCancelled({productId: "p1", orderId: "gwt-id"})),
20
18
  ("p2", ExtensionPoint.ItemOrderCancelled({productId: "p2", orderId: "gwt-id"})),
21
19
  ])
22
20
  )
23
21
 
24
- test("Shipped publishes nothing", () =>
25
- whenDelegateEvent(Delegate.Shipped)->thenPublishesNothing
26
- )
22
+ test("Shipped publishes nothing", () => whenDelegateEvent(Delegate.Shipped)->thenPublishesNothing)
27
23
 
28
24
  test("Refunded publishes nothing", () =>
29
- whenDelegateEvent(
30
- Delegate.Refunded({reason: "customer-changed-mind"}),
31
- )->thenPublishesNothing
25
+ whenDelegateEvent(Delegate.Refunded({reason: "customer-changed-mind"}))->thenPublishesNothing
32
26
  )
33
27
  })
@@ -43,9 +43,7 @@ describe("Order auto-ship mapping (Placed → Ship)", () => {
43
43
 
44
44
  test("Refund command does not fire the mapping (only Placed events do)", () =>
45
45
  givenSourceEvents([placedEvent, Order.Cancelled({productIds: ["prod-1"]})])
46
- ->andTargetEvents([
47
- ("order-1", [placedEvent, Order.Cancelled({productIds: ["prod-1"]})]),
48
- ])
46
+ ->andTargetEvents([("order-1", [placedEvent, Order.Cancelled({productIds: ["prod-1"]})])])
49
47
  ->whenSourceCmd("order-1", Refund({reason: "customer-changed-mind"}))
50
48
  ->thenNoTargetEvent
51
49
  )
@@ -1,2 +1,2 @@
1
- #Start(1788849058573)
2
- #Done(1788849064855)
1
+ #Start(1788992654955)
2
+ #Done(1788992660649)
@@ -10,4 +10,3 @@
10
10
 
11
11
  @schema
12
12
  type state = {name: string, price: float}
13
-
@@ -9,10 +9,8 @@ module CatalogProductMapping = Mapping.Make(
9
9
  open CatalogProduct
10
10
  let project = ({event, id, _}) =>
11
11
  switch event {
12
- | Synced({name, price}) =>
13
- Set(id, {AvailableProducts.name: name, price})
14
- | PriceUpdated({price}) =>
15
- Update(id, state => {...state, price})
12
+ | Synced({name, price}) => Set(id, {AvailableProducts.name, price})
13
+ | PriceUpdated({price}) => Update(id, state => {...state, price})
16
14
  }
17
15
  },
18
16
  )