diff --git a/packages/medusa/src/api/admin/campaigns/validators.ts b/packages/medusa/src/api/admin/campaigns/validators.ts index 0dd4a7d160..559aaadb32 100644 --- a/packages/medusa/src/api/admin/campaigns/validators.ts +++ b/packages/medusa/src/api/admin/campaigns/validators.ts @@ -1,6 +1,10 @@ import { CampaignBudgetType, isPresent } from "@medusajs/utils" -import { z, ZodObject } from "zod" -import { createFindParams, createSelectParams } from "../../utils/validators" +import { z } from "zod" +import { + createFindParams, + createSelectParams, + WithAdditionalData, +} from "../../utils/validators" export const AdminGetCampaignParams = createSelectParams() @@ -68,19 +72,7 @@ export const CreateCampaign = z promotions: z.array(z.object({ id: z.string() })).optional(), }) .strict() -export const AdminCreateCampaign = ( - additionalDataValidator?: ZodObject -) => { - if (!additionalDataValidator) { - return CreateCampaign.extend({ - additional_data: z.record(z.unknown()).nullish(), - }) - } - - return CreateCampaign.extend({ - additional_data: additionalDataValidator, - }) -} +export const AdminCreateCampaign = WithAdditionalData(CreateCampaign) export type AdminUpdateCampaignType = z.infer export const UpdateCampaign = z.object({ @@ -92,16 +84,4 @@ export const UpdateCampaign = z.object({ ends_at: z.coerce.date().nullish(), promotions: z.array(z.object({ id: z.string() })).optional(), }) -export const AdminUpdateCampaign = ( - additionalDataValidator?: ZodObject -) => { - if (!additionalDataValidator) { - return UpdateCampaign.extend({ - additional_data: z.record(z.unknown()).nullish(), - }) - } - - return UpdateCampaign.extend({ - additional_data: additionalDataValidator, - }) -} +export const AdminUpdateCampaign = WithAdditionalData(UpdateCampaign) diff --git a/packages/medusa/src/api/admin/customers/validators.ts b/packages/medusa/src/api/admin/customers/validators.ts index 09dffbdb1b..5f1b19cbe8 100644 --- a/packages/medusa/src/api/admin/customers/validators.ts +++ b/packages/medusa/src/api/admin/customers/validators.ts @@ -1,8 +1,9 @@ -import { z, ZodObject } from "zod" +import { z } from "zod" import { createFindParams, createOperatorMap, createSelectParams, + WithAdditionalData, } from "../../utils/validators" export const AdminCustomerParams = createSelectParams() @@ -50,19 +51,7 @@ export const CreateCustomer = z.object({ phone: z.string().nullish(), metadata: z.record(z.unknown()).nullish(), }) -export const AdminCreateCustomer = ( - additionalDataValidator?: ZodObject -) => { - if (!additionalDataValidator) { - return CreateCustomer.extend({ - additional_data: z.record(z.unknown()).nullish(), - }) - } - - return CreateCustomer.extend({ - additional_data: additionalDataValidator, - }) -} +export const AdminCreateCustomer = WithAdditionalData(CreateCustomer) export const UpdateCustomer = z.object({ email: z.string().email().nullish(), @@ -72,19 +61,7 @@ export const UpdateCustomer = z.object({ phone: z.string().nullish(), metadata: z.record(z.unknown()).nullish(), }) -export const AdminUpdateCustomer = ( - additionalDataValidator?: ZodObject -) => { - if (!additionalDataValidator) { - return UpdateCustomer.extend({ - additional_data: z.record(z.unknown()).nullish(), - }) - } - - return UpdateCustomer.extend({ - additional_data: additionalDataValidator, - }) -} +export const AdminUpdateCustomer = WithAdditionalData(UpdateCustomer) export const CreateCustomerAddress = z.object({ address_name: z.string().nullish(), @@ -102,19 +79,9 @@ export const CreateCustomerAddress = z.object({ phone: z.string().nullish(), metadata: z.record(z.unknown()).nullish(), }) -export const AdminCreateCustomerAddress = ( - additionalDataValidator?: ZodObject -) => { - if (!additionalDataValidator) { - return CreateCustomerAddress.extend({ - additional_data: z.record(z.unknown()).nullish(), - }) - } - - return CreateCustomerAddress.extend({ - additional_data: additionalDataValidator, - }) -} +export const AdminCreateCustomerAddress = WithAdditionalData( + CreateCustomerAddress +) export const AdminUpdateCustomerAddress = AdminCreateCustomerAddress diff --git a/packages/medusa/src/api/admin/products/validators.ts b/packages/medusa/src/api/admin/products/validators.ts index 6eb2ed9315..ccbbf9973f 100644 --- a/packages/medusa/src/api/admin/products/validators.ts +++ b/packages/medusa/src/api/admin/products/validators.ts @@ -4,11 +4,12 @@ import { GetProductsParams, transformProductParams, } from "../../utils/common-validators" -import { z, ZodObject } from "zod" +import { z } from "zod" import { createFindParams, createOperatorMap, createSelectParams, + WithAdditionalData, } from "../../utils/validators" const statusEnum = z.nativeEnum(ProductStatus) @@ -90,19 +91,7 @@ export const CreateProductOption = z.object({ title: z.string(), values: z.array(z.string()), }) -export const AdminCreateProductOption = ( - additionalDataValidator?: ZodObject -) => { - if (!additionalDataValidator) { - return CreateProductOption.extend({ - additional_data: z.record(z.unknown()).nullish(), - }) - } - - return CreateProductOption.extend({ - additional_data: additionalDataValidator, - }) -} +export const AdminCreateProductOption = WithAdditionalData(CreateProductOption) export type AdminUpdateProductOptionType = z.infer export const UpdateProductOption = z.object({ @@ -111,19 +100,7 @@ export const UpdateProductOption = z.object({ values: z.array(z.string()).optional(), }) -export const AdminUpdateProductOption = ( - additionalDataValidator?: ZodObject -) => { - if (!additionalDataValidator) { - return UpdateProductOption.extend({ - additional_data: z.record(z.unknown()).nullish(), - }) - } - - return UpdateProductOption.extend({ - additional_data: additionalDataValidator, - }) -} +export const AdminUpdateProductOption = WithAdditionalData(UpdateProductOption) export type AdminCreateVariantPriceType = z.infer< typeof AdminCreateVariantPrice @@ -185,19 +162,8 @@ export const CreateProductVariant = z .optional(), }) .strict() -export const AdminCreateProductVariant = ( - additionalDataValidator?: ZodObject -) => { - if (!additionalDataValidator) { - return CreateProductVariant.extend({ - additional_data: z.record(z.string()).optional(), - }) - } - - return CreateProductVariant.extend({ - additional_data: additionalDataValidator, - }) -} +export const AdminCreateProductVariant = + WithAdditionalData(CreateProductVariant) export type AdminUpdateProductVariantType = z.infer export const UpdateProductVariant = z @@ -225,19 +191,8 @@ export const UpdateProductVariant = z }) .strict() -export const AdminUpdateProductVariant = ( - additionalDataValidator?: ZodObject -) => { - if (!additionalDataValidator) { - return UpdateProductVariant.extend({ - additional_data: z.record(z.string()).optional(), - }) - } - - return UpdateProductVariant.extend({ - additional_data: additionalDataValidator, - }) -} +export const AdminUpdateProductVariant = + WithAdditionalData(UpdateProductVariant) export type AdminBatchUpdateProductVariantType = z.infer< typeof AdminBatchUpdateProductVariant @@ -281,19 +236,7 @@ export const CreateProduct = z }) .strict() -export const AdminCreateProduct = ( - additionalDataValidator?: ZodObject -) => { - if (!additionalDataValidator) { - return CreateProduct.extend({ - additional_data: z.record(z.unknown()).nullish(), - }) - } - - return CreateProduct.extend({ - additional_data: additionalDataValidator, - }) -} +export const AdminCreateProduct = WithAdditionalData(CreateProduct) export type AdminUpdateProductType = z.infer export const UpdateProduct = z @@ -326,19 +269,7 @@ export const UpdateProduct = z }) .strict() -export const AdminUpdateProduct = ( - additionalDataValidator?: ZodObject -) => { - if (!additionalDataValidator) { - return UpdateProduct.extend({ - additional_data: z.record(z.unknown()).nullish(), - }) - } - - return UpdateProduct.extend({ - additional_data: additionalDataValidator, - }) -} +export const AdminUpdateProduct = WithAdditionalData(UpdateProduct) export type AdminBatchUpdateProductType = z.infer< typeof AdminBatchUpdateProduct diff --git a/packages/medusa/src/api/admin/promotions/validators.ts b/packages/medusa/src/api/admin/promotions/validators.ts index 2a8c8a8310..80ecbf41c0 100644 --- a/packages/medusa/src/api/admin/promotions/validators.ts +++ b/packages/medusa/src/api/admin/promotions/validators.ts @@ -5,11 +5,12 @@ import { PromotionRuleOperator, PromotionType, } from "@medusajs/utils" -import { z, ZodObject } from "zod" +import { z } from "zod" import { createFindParams, createOperatorMap, createSelectParams, + WithAdditionalData, } from "../../utils/validators" import { CreateCampaign } from "../campaigns/validators" @@ -168,25 +169,15 @@ export const CreatePromotion = z }) .strict() -export const AdminCreatePromotion = ( - additionalDataValidator?: ZodObject -) => { - if (!additionalDataValidator) { - return CreatePromotion.extend({ - additional_data: z.record(z.unknown()).nullish(), - }).refine(promoRefinement, { +export const AdminCreatePromotion = WithAdditionalData( + CreatePromotion, + (schema) => { + return schema.refine(promoRefinement, { message: "Buyget promotions require at least one buy rule and quantities to be defined", }) } - - return CreatePromotion.extend({ - additional_data: additionalDataValidator, - }).refine(promoRefinement, { - message: - "Buyget promotions require at least one buy rule and quantities to be defined", - }) -} +) export type AdminUpdatePromotionType = z.infer export const UpdatePromotion = z @@ -201,22 +192,12 @@ export const UpdatePromotion = z }) .strict() -export const AdminUpdatePromotion = ( - additionalDataValidator?: ZodObject -) => { - if (!additionalDataValidator) { - return UpdatePromotion.extend({ - additional_data: z.record(z.unknown()).nullish(), - }).refine(promoRefinement, { +export const AdminUpdatePromotion = WithAdditionalData( + UpdatePromotion, + (schema) => { + return schema.refine(promoRefinement, { message: "Buyget promotions require at least one buy rule and quantities to be defined", }) } - - return UpdatePromotion.extend({ - additional_data: additionalDataValidator, - }).refine(promoRefinement, { - message: - "Buyget promotions require at least one buy rule and quantities to be defined", - }) -} +)