Преглед изворни кода

fix: Add type safety for order item update fields

Thomas Blommaert пре 5 година
родитељ
комит
42bf55a743

+ 1 - 1
packages/core/src/entity/order-item/order-item.entity.ts

@@ -28,7 +28,7 @@ export class OrderItem extends VendureEntity {
     line: OrderLine;
 
     @EntityId()
-    lineId: ID;
+    lineId: ID; // TypeORM requires this ID field on the entity explicitly in order to save the foreign key via `.insert`
 
     /**
      * @description

+ 1 - 1
packages/core/src/service/helpers/order-modifier/order-modifier.ts

@@ -158,7 +158,7 @@ export class OrderModifier {
                         listPriceIncludesTax: orderLine.productVariant.priceIncludesTax,
                         adjustments: [],
                         taxLines: [],
-                        line: orderLine,
+                        lineId: orderLine.id,
                     }),
                 );
             }

+ 8 - 8
packages/core/src/service/services/order.service.ts

@@ -1328,7 +1328,13 @@ export class OrderService {
             promotions,
             updatedOrderLine ? [updatedOrderLine] : [],
         );
-        // await this.connection.getRepository(ctx, OrderItem).save(updatedItems, { reload: false });
+        const updateFields: Array<keyof OrderItem> = [
+            'initialListPrice',
+            'listPrice',
+            'listPriceIncludesTax',
+            'adjustments',
+            'taxLines',
+        ];
         await this.connection
             .getRepository(ctx, OrderItem)
             .createQueryBuilder()
@@ -1336,13 +1342,7 @@ export class OrderService {
             .values(updatedItems)
             .orUpdate({
                 conflict_target: ['id'],
-                overwrite: [
-                    'initialListPrice',
-                    'listPrice',
-                    'listPriceIncludesTax',
-                    'adjustments',
-                    'taxLines',
-                ],
+                overwrite: updateFields,
             })
             .updateEntity(false)
             .execute();