From ee3580efdb3e46b8067b0439ab1583c17dd111d9 Mon Sep 17 00:00:00 2001 From: Shahed Nasser Date: Wed, 4 Sep 2024 21:22:48 +0300 Subject: [PATCH] fix(core-flows, types, medusa): fix batch delete types in workflows and routes (#8974) - Fix the returned data of batch delete steps / workflows for deleted records to just be the array of IDs. - Add a new type `BatchResponse` for API routes to have a different shape for deleted records - Update batch delete helpers to return the expected shape for API routes --- .../steps/delete-shipping-option-rules.ts | 2 +- .../product/workflows/batch-product-variants.ts | 6 +----- .../src/product/workflows/batch-products.ts | 6 +----- .../steps/delete-promotion-rules-workflow.ts | 6 +----- packages/core/types/src/common/batch.ts | 6 +----- packages/core/types/src/http/common/response.ts | 10 ++++++++++ .../types/src/http/product/admin/responses.ts | 9 ++++----- .../types/src/http/promotion/admin/responses.ts | 5 ++--- .../src/http/shipping-option/admin/responses.ts | 5 ++--- .../medusa/src/api/admin/products/helpers.ts | 17 +++++++++++++---- .../medusa/src/api/admin/promotions/helpers.ts | 10 +++++++--- .../src/api/admin/shipping-options/helpers.ts | 6 +++++- 12 files changed, 48 insertions(+), 40 deletions(-) diff --git a/packages/core/core-flows/src/fulfillment/steps/delete-shipping-option-rules.ts b/packages/core/core-flows/src/fulfillment/steps/delete-shipping-option-rules.ts index e8e4b17287..cc98f15076 100644 --- a/packages/core/core-flows/src/fulfillment/steps/delete-shipping-option-rules.ts +++ b/packages/core/core-flows/src/fulfillment/steps/delete-shipping-option-rules.ts @@ -33,7 +33,7 @@ export const deleteShippingOptionRulesStep = createStep( await fulfillmentModule.deleteShippingOptionRules(ids) - return new StepResponse(null, shippingOptionRules) + return new StepResponse(ids, shippingOptionRules) }, async (shippingOptionRules, { container }) => { if (!shippingOptionRules?.length) { diff --git a/packages/core/core-flows/src/product/workflows/batch-product-variants.ts b/packages/core/core-flows/src/product/workflows/batch-product-variants.ts index 0383cf259a..cddc98ffe9 100644 --- a/packages/core/core-flows/src/product/workflows/batch-product-variants.ts +++ b/packages/core/core-flows/src/product/workflows/batch-product-variants.ts @@ -54,11 +54,7 @@ export const batchProductVariantsWorkflow = createWorkflow( return { created: data.res[0], updated: data.res[1], - deleted: { - ids: data.input.delete ?? [], - object: "product_variant", - deleted: true, - }, + deleted: data.input.delete ?? [], } }) diff --git a/packages/core/core-flows/src/product/workflows/batch-products.ts b/packages/core/core-flows/src/product/workflows/batch-products.ts index 6e3caed661..e176032e02 100644 --- a/packages/core/core-flows/src/product/workflows/batch-products.ts +++ b/packages/core/core-flows/src/product/workflows/batch-products.ts @@ -47,11 +47,7 @@ export const batchProductsWorkflow = createWorkflow( return { created: data.res[0], updated: data.res[1], - deleted: { - ids: data.input.delete ?? [], - object: "product", - deleted: true, - }, + deleted: data.input.delete ?? [], } }) ) diff --git a/packages/core/core-flows/src/promotion/steps/delete-promotion-rules-workflow.ts b/packages/core/core-flows/src/promotion/steps/delete-promotion-rules-workflow.ts index 79e1aa9592..d96b26d125 100644 --- a/packages/core/core-flows/src/promotion/steps/delete-promotion-rules-workflow.ts +++ b/packages/core/core-flows/src/promotion/steps/delete-promotion-rules-workflow.ts @@ -22,11 +22,7 @@ export const deletePromotionRulesWorkflowStep = createStep( } return new StepResponse( - { - ids: data.data.rule_ids ?? [], - object: "promotion-rule", - deleted: true, - }, + data.data.rule_ids ?? [], transaction ) }, diff --git a/packages/core/types/src/common/batch.ts b/packages/core/types/src/common/batch.ts index 23c1eb6393..7109ffc92a 100644 --- a/packages/core/types/src/common/batch.ts +++ b/packages/core/types/src/common/batch.ts @@ -18,11 +18,7 @@ export type BatchMethodRequest = { export type BatchMethodResponse = { created: T[] updated: T[] - deleted: { - ids: string[] - object: string - deleted: boolean - } + deleted: string[] } export type BatchWorkflowInput< diff --git a/packages/core/types/src/http/common/response.ts b/packages/core/types/src/http/common/response.ts index c06ea8b2e8..2a2fe1eb86 100644 --- a/packages/core/types/src/http/common/response.ts +++ b/packages/core/types/src/http/common/response.ts @@ -29,3 +29,13 @@ export type PaginatedResponse = { offset: number count: number } & T + +export type BatchResponse = { + created: T[] + updated: T[] + deleted: { + ids: string[] + object: string + deleted: boolean + } +} \ No newline at end of file diff --git a/packages/core/types/src/http/product/admin/responses.ts b/packages/core/types/src/http/product/admin/responses.ts index db15104e01..cc7eeb453f 100644 --- a/packages/core/types/src/http/product/admin/responses.ts +++ b/packages/core/types/src/http/product/admin/responses.ts @@ -1,5 +1,4 @@ -import { BatchMethodResponse } from "../../../common" -import { DeleteResponse, DeleteResponseWithParent, PaginatedResponse } from "../../common" +import { BatchResponse, DeleteResponse, DeleteResponseWithParent, PaginatedResponse } from "../../common" import { AdminProduct, AdminProductOption, @@ -19,7 +18,7 @@ export type AdminProductListResponse = PaginatedResponse<{ export interface AdminProductDeleteResponse extends DeleteResponse<"product"> {} export interface AdminBatchProductResponse - extends BatchMethodResponse {} + extends BatchResponse {} export interface AdminProductVariantResponse { variant: AdminProductVariant @@ -45,10 +44,10 @@ export interface AdminImportProductResponse { } export interface AdminBatchProductVariantResponse - extends BatchMethodResponse {} + extends BatchResponse {} export interface AdminBatchProductVariantInventoryItemResponse - extends BatchMethodResponse {} + extends BatchResponse {} export interface AdminProductOptionResponse { product_option: AdminProductOption diff --git a/packages/core/types/src/http/promotion/admin/responses.ts b/packages/core/types/src/http/promotion/admin/responses.ts index b64709e160..b338c39e3e 100644 --- a/packages/core/types/src/http/promotion/admin/responses.ts +++ b/packages/core/types/src/http/promotion/admin/responses.ts @@ -1,5 +1,4 @@ -import { BatchMethodResponse } from "../../../common"; -import { DeleteResponse, PaginatedResponse } from "../../common"; +import { BatchResponse, DeleteResponse, PaginatedResponse } from "../../common"; import { AdminPromotion, AdminPromotionRule, @@ -54,6 +53,6 @@ export type AdminRuleValueOptionsListResponse = { values: AdminRuleValueOption[] } -export type AdminPromotionRuleBatchResponse = BatchMethodResponse +export type AdminPromotionRuleBatchResponse = BatchResponse export type AdminPromotionDeleteResponse = DeleteResponse<"promotion"> \ No newline at end of file diff --git a/packages/core/types/src/http/shipping-option/admin/responses.ts b/packages/core/types/src/http/shipping-option/admin/responses.ts index 91a1476833..9118173e3f 100644 --- a/packages/core/types/src/http/shipping-option/admin/responses.ts +++ b/packages/core/types/src/http/shipping-option/admin/responses.ts @@ -1,5 +1,4 @@ -import { BatchMethodResponse } from "../../../common" -import { DeleteResponse, PaginatedResponse } from "../../common" +import { BatchResponse, DeleteResponse, PaginatedResponse } from "../../common" import { AdminShippingOption, AdminShippingOptionRule } from "./entities" export interface AdminShippingOptionResponse { @@ -13,4 +12,4 @@ export type AdminShippingOptionListResponse = PaginatedResponse<{ export interface AdminShippingOptionDeleteResponse extends DeleteResponse<"shipping_option"> {} -export type AdminUpdateShippingOptionRulesResponse = BatchMethodResponse \ No newline at end of file +export type AdminUpdateShippingOptionRulesResponse = BatchResponse \ No newline at end of file diff --git a/packages/medusa/src/api/admin/products/helpers.ts b/packages/medusa/src/api/admin/products/helpers.ts index 18d921cd9e..3fc5f0cc35 100644 --- a/packages/medusa/src/api/admin/products/helpers.ts +++ b/packages/medusa/src/api/admin/products/helpers.ts @@ -1,5 +1,6 @@ import { BatchMethodResponse, + BatchResponse, HttpTypes, LinkDefinition, MedusaContainer, @@ -125,7 +126,7 @@ export const refetchBatchProducts = async ( batchResult: BatchMethodResponse, scope: MedusaContainer, fields: string[] -) => { +): Promise> => { const remoteQuery = scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY) let created = Promise.resolve([]) let updated = Promise.resolve([]) @@ -160,7 +161,11 @@ export const refetchBatchProducts = async ( return { created: createdRes, updated: updatedRes, - deleted: batchResult.deleted, + deleted: { + ids: batchResult.deleted, + object: "product", + deleted: true, + }, } } @@ -168,7 +173,7 @@ export const refetchBatchVariants = async ( batchResult: BatchMethodResponse, scope: MedusaContainer, fields: string[] -) => { +): Promise> => { const remoteQuery = scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY) let created = Promise.resolve([]) let updated = Promise.resolve([]) @@ -203,7 +208,11 @@ export const refetchBatchVariants = async ( return { created: createdRes, updated: updatedRes, - deleted: batchResult.deleted, + deleted: { + ids: batchResult.deleted, + object: "variant", + deleted: true, + }, } } diff --git a/packages/medusa/src/api/admin/promotions/helpers.ts b/packages/medusa/src/api/admin/promotions/helpers.ts index b36b621197..96d1909678 100644 --- a/packages/medusa/src/api/admin/promotions/helpers.ts +++ b/packages/medusa/src/api/admin/promotions/helpers.ts @@ -1,4 +1,4 @@ -import { BatchMethodResponse } from "@medusajs/types" +import { BatchMethodResponse, BatchResponse } from "@medusajs/types" import { PromotionRuleDTO, MedusaContainer } from "@medusajs/types" import { promiseAll, @@ -28,7 +28,7 @@ export const refetchBatchRules = async ( batchResult: BatchMethodResponse, scope: MedusaContainer, fields: string[] -) => { +): Promise> => { const remoteQuery = scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY) let created = Promise.resolve([]) let updated = Promise.resolve([]) @@ -63,6 +63,10 @@ export const refetchBatchRules = async ( return { created: createdRes, updated: updatedRes, - deleted: batchResult.deleted, + deleted: { + ids: batchResult.deleted, + object: "promotion-rule", + deleted: true, + }, } } diff --git a/packages/medusa/src/api/admin/shipping-options/helpers.ts b/packages/medusa/src/api/admin/shipping-options/helpers.ts index af9286cbb5..3c32e772aa 100644 --- a/packages/medusa/src/api/admin/shipping-options/helpers.ts +++ b/packages/medusa/src/api/admin/shipping-options/helpers.ts @@ -66,6 +66,10 @@ export const refetchBatchRules = async ( return { created: createdRes, updated: updatedRes, - deleted: batchResult.deleted, + deleted: { + ids: batchResult.deleted, + object: "shipping_option_rule", + deleted: true, + }, } }