Commit 93b38bf
authored
fix: do not pass additional_data to service (#9532)
Fixes: FRMW-2743
This PR extracts and removes the `additional_data` from the workflow input before calling the steps and hence the `additional_data` is not passed down to the service layer.
However, this bug has made me discover one inconsistency in the input structure of certain workflows.
✅ **Following is the input structure of the `updateProductsWorkflow`**. Here, we accept the `products` and the `additional_data` as two separate top-level properties.
```ts
// Shape
export type UpdateProductsWorkflowInputSelector = {
selector: ProductTypes.FilterableProductProps
update: Omit<ProductTypes.UpdateProductDTO, "variants"> & {
sales_channels?: { id: string }[]
variants?: UpdateProductVariantWorkflowInputDTO[]
}
} & AdditionalData
// Calling the workflow
const { result } = await updateProductsWorkflow(req.scope).run({
input: {
selector: { id: req.params.id },
update,
additional_data,
},
})
```
❌ **Following in the input structure of the `updateCartWorflow`**. In this case, we are accepting the cart properties at the top-level, hence the `additional_data` is merged within those properties, increasing the chance of passing it down to the service layer by mistake.
```ts
// Shape
WorkflowData<UpdateCartWorkflowInputDTO & AdditionalData>
// Calling the workflow
await workflow.run({
input: {
...req.validatedBody // Additional data is part of the validatedBody,
id: req.params.id,
},
})
```
Ideally, the input of `updateCartWorkflow` should look as follows.
```ts
WorkflowData<{ cart: UpdateCartWorkflowInputDTO } & AdditionalData>
```1 parent c8b375a commit 93b38bf
1 file changed
+5
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
71 | | - | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
72 | 76 | | |
73 | 77 | | |
74 | 78 | | |
| |||
0 commit comments