fix: Standardize remaining batch methods and update FE calls (#7122)

This commit is contained in:
Stevche Radevski
2024-04-23 09:12:38 +00:00
committed by GitHub
parent ea14a3bd68
commit 9e3556686b
49 changed files with 851 additions and 611 deletions
@@ -5,10 +5,9 @@ import {
} from "@medusajs/types"
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
export const addRulesToFulfillmentShippingOptionStepId =
"add-rules-to-fulfillment-shipping-option"
export const addRulesToFulfillmentShippingOptionStep = createStep(
addRulesToFulfillmentShippingOptionStepId,
export const createShippingOptionRulesStepId = "create-shipping-option-rules"
export const createShippingOptionRulesStep = createStep(
createShippingOptionRulesStepId,
async (
input: AddFulfillmentShippingOptionRulesWorkflowDTO,
{ container }
@@ -6,10 +6,9 @@ import {
} from "@medusajs/types"
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
export const removeRulesFromFulfillmentShippingOptionStepId =
"remove-rules-from-fulfillment-shipping-option"
export const removeRulesFromFulfillmentShippingOptionStep = createStep(
removeRulesFromFulfillmentShippingOptionStepId,
export const deleteShippingOptionRulesStepId = "delete-shipping-option-rules"
export const deleteShippingOptionRulesStep = createStep(
deleteShippingOptionRulesStepId,
async (
input: RemoveFulfillmentShippingOptionRulesWorkflowDTO,
{ container }
@@ -1,4 +1,4 @@
export * from "./add-rules-to-fulfillment-shipping-option"
export * from "./create-shipping-option-rules"
export * from "./add-shipping-options-prices"
export * from "./cancel-fulfillment"
export * from "./create-fulfillment"
@@ -8,7 +8,7 @@ export * from "./create-shipping-profiles"
export * from "./delete-fulfillment-sets"
export * from "./delete-service-zones"
export * from "./delete-shipping-options"
export * from "./remove-rules-from-fulfillment-shipping-option"
export * from "./delete-shipping-option-rules"
export * from "./set-shipping-options-prices"
export * from "./update-fulfillment"
export * from "./upsert-shipping-options"
@@ -1,14 +0,0 @@
import { AddFulfillmentShippingOptionRulesWorkflowDTO } from "@medusajs/types"
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import { addRulesToFulfillmentShippingOptionStep } from "../steps"
export const addRulesToFulfillmentShippingOptionWorkflowId =
"add-rules-to-fulfillment-shipping-option-workflow"
export const addRulesToFulfillmentShippingOptionWorkflow = createWorkflow(
addRulesToFulfillmentShippingOptionWorkflowId,
(
input: WorkflowData<AddFulfillmentShippingOptionRulesWorkflowDTO>
): WorkflowData<void> => {
addRulesToFulfillmentShippingOptionStep(input)
}
)
@@ -0,0 +1,51 @@
import {
BatchWorkflowInput,
BatchWorkflowOutput,
CreateShippingOptionRuleDTO,
ShippingOptionRuleDTO,
UpdateShippingOptionRuleDTO,
} from "@medusajs/types"
import {
WorkflowData,
createWorkflow,
parallelize,
transform,
} from "@medusajs/workflows-sdk"
import {
createShippingOptionRulesStep,
deleteShippingOptionRulesStep,
} from "../steps"
export const batchShippingOptionRulesWorkflowId = "batch-shipping-option-rules"
export const batchShippingOptionRulesWorkflow = createWorkflow(
batchShippingOptionRulesWorkflowId,
(
input: WorkflowData<
BatchWorkflowInput<
CreateShippingOptionRuleDTO,
UpdateShippingOptionRuleDTO
>
>
): WorkflowData<BatchWorkflowOutput<ShippingOptionRuleDTO>> => {
const createInput = transform({ input }, (data) => ({
data: data.input.create ?? [],
}))
const updateInput = transform({ input }, (data) => ({
data: data.input.update ?? [],
}))
const deleteInput = transform({ input }, (data) => ({
ids: data.input.delete ?? [],
}))
// TODO: Currently we don't support edits, add support for this.
// We just call the steps directly here since there are no independent workflows, switch to CRUD workflows if they get added.
const [created, deleted] = parallelize(
createShippingOptionRulesStep(createInput),
deleteShippingOptionRulesStep(deleteInput)
)
return transform({ created, deleted }, (data) => ({ ...data, updated: [] }))
}
)
@@ -1,4 +1,4 @@
export * from "./add-rules-to-fulfillment-shipping-option"
export * from "./batch-shipping-option-rules"
export * from "./cancel-fulfillment"
export * from "./create-fulfillment"
export * from "./create-service-zones"
@@ -8,7 +8,6 @@ export * from "./create-shipping-profiles"
export * from "./delete-fulfillment-sets"
export * from "./delete-service-zones"
export * from "./delete-shipping-options"
export * from "./remove-rules-from-fulfillment-shipping-option"
export * from "./update-fulfillment"
export * from "./update-service-zones"
export * from "./update-shipping-options"
@@ -1,14 +0,0 @@
import { RemoveFulfillmentShippingOptionRulesWorkflowDTO } from "@medusajs/types"
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import { removeRulesFromFulfillmentShippingOptionStep } from "../steps"
export const removeRulesFromFulfillmentShippingOptionWorkflowId =
"remove-rules-from-fulfillment-shipping-option-workflow"
export const removeRulesFromFulfillmentShippingOptionWorkflow = createWorkflow(
removeRulesFromFulfillmentShippingOptionWorkflowId,
(
input: WorkflowData<RemoveFulfillmentShippingOptionRulesWorkflowDTO>
): WorkflowData<void> => {
removeRulesFromFulfillmentShippingOptionStep(input)
}
)
@@ -18,19 +18,42 @@ export const batchProductVariantsStep = createStep(
>,
{ container }
) => {
const { transaction: createTransaction, result: created } =
await createProductVariantsWorkflow(container).run({
input: { product_variants: data.create ?? [] },
})
const { transaction: updateTransaction, result: updated } =
await updateProductVariantsWorkflow(container).run({
input: { product_variants: data.update ?? [] },
})
const { transaction: deleteTransaction } =
const {
transaction: createTransaction,
result: created,
errors: createErrors,
} = await createProductVariantsWorkflow(container).run({
input: { product_variants: data.create ?? [] },
throwOnError: false,
})
if (createErrors?.length) {
throw createErrors[0].error
}
const {
transaction: updateTransaction,
result: updated,
errors: updateErrors,
} = await updateProductVariantsWorkflow(container).run({
input: { product_variants: data.update ?? [] },
throwOnError: false,
})
if (updateErrors?.length) {
throw updateErrors[0].error
}
const { transaction: deleteTransaction, errors: deleteErrors } =
await deleteProductVariantsWorkflow(container).run({
input: { ids: data.delete ?? [] },
throwOnError: false,
})
if (deleteErrors?.length) {
throw deleteErrors[0].error
}
return new StepResponse(
{
created,
@@ -18,20 +18,42 @@ export const batchProductsStep = createStep(
>,
{ container }
) => {
const { transaction: createTransaction, result: created } =
await createProductsWorkflow(container).run({
input: { products: data.create ?? [] },
})
const { transaction: updateTransaction, result: updated } =
await updateProductsWorkflow(container).run({
input: { products: data.update ?? [] },
})
const { transaction: deleteTransaction } = await deleteProductsWorkflow(
container
).run({
input: { ids: data.delete ?? [] },
const {
transaction: createTransaction,
result: created,
errors: createErrors,
} = await createProductsWorkflow(container).run({
input: { products: data.create ?? [] },
throwOnError: false,
})
if (createErrors?.length) {
throw createErrors[0].error
}
const {
transaction: updateTransaction,
result: updated,
errors: updateErrors,
} = await updateProductsWorkflow(container).run({
input: { products: data.update ?? [] },
throwOnError: false,
})
if (updateErrors?.length) {
throw updateErrors[0].error
}
const { transaction: deleteTransaction, errors: deleteErrors } =
await deleteProductsWorkflow(container).run({
input: { ids: data.delete ?? [] },
throwOnError: false,
})
if (deleteErrors?.length) {
throw deleteErrors[0].error
}
return new StepResponse(
{
created,
@@ -0,0 +1,33 @@
import { AddPromotionRulesWorkflowDTO } from "@medusajs/types"
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
import { createPromotionRulesWorkflow } from "../workflows/create-promotion-rules"
export const createPromotionRulesWorkflowStepId =
"create-promotion-rules-workflow"
export const createPromotionRulesWorkflowStep = createStep(
createPromotionRulesWorkflowStepId,
async (data: AddPromotionRulesWorkflowDTO, { container }) => {
const {
transaction,
result: created,
errors,
} = await createPromotionRulesWorkflow(container).run({
input: data,
throwOnError: false,
})
if (errors?.length) {
throw errors[0].error
}
return new StepResponse(created, transaction)
},
async (transaction, { container }) => {
if (!transaction) {
return
}
await createPromotionRulesWorkflow(container).cancel({ transaction })
}
)
@@ -0,0 +1,38 @@
import { RemovePromotionRulesWorkflowDTO } from "@medusajs/types"
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
import { deletePromotionRulesWorkflow } from "../workflows/delete-promotion-rules"
export const deletePromotionRulesWorkflowStepId =
"delete-promotion-rules-workflow"
export const deletePromotionRulesWorkflowStep = createStep(
deletePromotionRulesWorkflowStepId,
async (data: RemovePromotionRulesWorkflowDTO, { container }) => {
const { transaction, errors } = await deletePromotionRulesWorkflow(
container
).run({
input: data,
throwOnError: false,
})
if (errors?.length) {
throw errors[0].error
}
return new StepResponse(
{
ids: data.data.rule_ids ?? [],
object: "promotion-rule",
deleted: true,
},
transaction
)
},
async (transaction, { container }) => {
if (!transaction) {
return
}
await deletePromotionRulesWorkflow(container).cancel({ transaction })
}
)
@@ -0,0 +1,33 @@
import { UpdatePromotionRulesWorkflowDTO } from "@medusajs/types"
import { StepResponse, createStep } from "@medusajs/workflows-sdk"
import { updatePromotionRulesWorkflow } from "../workflows/update-promotion-rules"
export const updatePromotionRulesWorkflowStepId =
"update-promotion-rules-workflow"
export const updatePromotionRulesWorkflowStep = createStep(
updatePromotionRulesWorkflowStepId,
async (data: UpdatePromotionRulesWorkflowDTO, { container }) => {
const {
transaction,
result: updated,
errors,
} = await updatePromotionRulesWorkflow(container).run({
input: data,
throwOnError: false,
})
if (errors?.length) {
throw errors[0].error
}
return new StepResponse(updated, transaction)
},
async (transaction, { container }) => {
if (!transaction) {
return
}
await updatePromotionRulesWorkflow(container).cancel({ transaction })
}
)
@@ -1,11 +0,0 @@
import { AddPromotionRulesWorkflowDTO } from "@medusajs/types"
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import { addRulesToPromotionsStep } from "../steps"
export const addRulesToPromotionsWorkflowId = "add-rules-to-promotions-workflow"
export const addRulesToPromotionsWorkflow = createWorkflow(
addRulesToPromotionsWorkflowId,
(input: WorkflowData<AddPromotionRulesWorkflowDTO>): WorkflowData<void> => {
addRulesToPromotionsStep(input)
}
)
@@ -0,0 +1,52 @@
import {
BatchWorkflowInput,
BatchWorkflowOutput,
CreatePromotionRuleDTO,
PromotionRuleDTO,
UpdatePromotionRuleDTO,
} from "@medusajs/types"
import {
WorkflowData,
createWorkflow,
parallelize,
transform,
} from "@medusajs/workflows-sdk"
import { RuleType } from "@medusajs/utils"
import { createPromotionRulesWorkflowStep } from "../steps/create-promotion-rules-workflow"
import { updatePromotionRulesWorkflowStep } from "../steps/update-promotion-rules-workflow"
import { deletePromotionRulesWorkflowStep } from "../steps/delete-promotion-rules-workflow"
export const batchPromotionRulesWorkflowId = "batch-promotion-rules"
export const batchPromotionRulesWorkflow = createWorkflow(
batchPromotionRulesWorkflowId,
(
input: WorkflowData<
BatchWorkflowInput<CreatePromotionRuleDTO, UpdatePromotionRuleDTO> & {
id: string
rule_type: RuleType
}
>
): WorkflowData<BatchWorkflowOutput<PromotionRuleDTO>> => {
const createInput = transform({ input }, (data) => ({
rule_type: data.input.rule_type,
data: { id: data.input.id, rules: data.input.create ?? [] },
}))
const updateInput = transform({ input }, (data) => ({
data: data.input.update ?? [],
}))
const deleteInput = transform({ input }, (data) => ({
rule_type: data.input.rule_type,
data: { id: data.input.id, rule_ids: data.input.delete ?? [] },
}))
const [created, updated, deleted] = parallelize(
createPromotionRulesWorkflowStep(createInput),
updatePromotionRulesWorkflowStep(updateInput),
deletePromotionRulesWorkflowStep(deleteInput)
)
return transform({ created, updated, deleted }, (data) => data)
}
)
@@ -0,0 +1,13 @@
import { AddPromotionRulesWorkflowDTO, PromotionRuleDTO } from "@medusajs/types"
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import { addRulesToPromotionsStep } from "../steps"
export const createPromotionRulesWorkflowId = "create-promotion-rules-workflow"
export const createPromotionRulesWorkflow = createWorkflow(
createPromotionRulesWorkflowId,
(
input: WorkflowData<AddPromotionRulesWorkflowDTO>
): WorkflowData<PromotionRuleDTO[]> => {
return addRulesToPromotionsStep(input)
}
)
@@ -2,13 +2,12 @@ import { RemovePromotionRulesWorkflowDTO } from "@medusajs/types"
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import { removeRulesFromPromotionsStep } from "../steps"
export const removeRulesFromPromotionsWorkflowId =
"remove-rules-from-promotions-workflow"
export const removeRulesFromPromotionsWorkflow = createWorkflow(
removeRulesFromPromotionsWorkflowId,
export const deletePromotionRulesWorkflowId = "delete-promotion-rules-workflow"
export const deletePromotionRulesWorkflow = createWorkflow(
deletePromotionRulesWorkflowId,
(
input: WorkflowData<RemovePromotionRulesWorkflowDTO>
): WorkflowData<void> => {
removeRulesFromPromotionsStep(input)
return removeRulesFromPromotionsStep(input)
}
)
@@ -1,9 +1,10 @@
export * from "./add-rules-to-promotions"
export * from "./batch-promotion-rules"
export * from "./create-campaigns"
export * from "./create-promotions"
export * from "./delete-campaigns"
export * from "./delete-promotions"
export * from "./remove-rules-from-promotions"
export * from "./update-campaigns"
export * from "./update-promotion-rules"
export * from "./delete-promotion-rules"
export * from "./create-promotion-rules"
export * from "./update-promotions"
@@ -1,4 +1,7 @@
import { UpdatePromotionRulesWorkflowDTO } from "@medusajs/types"
import {
UpdatePromotionRulesWorkflowDTO,
PromotionRuleDTO,
} from "@medusajs/types"
import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk"
import { updatePromotionRulesStep } from "../steps"
@@ -7,7 +10,7 @@ export const updatePromotionRulesWorkflow = createWorkflow(
updatePromotionRulesWorkflowId,
(
input: WorkflowData<UpdatePromotionRulesWorkflowDTO>
): WorkflowData<void> => {
updatePromotionRulesStep(input)
): WorkflowData<PromotionRuleDTO[]> => {
return updatePromotionRulesStep(input)
}
)