diff --git a/.changeset/five-experts-wink.md b/.changeset/five-experts-wink.md new file mode 100644 index 0000000000..4820091246 --- /dev/null +++ b/.changeset/five-experts-wink.md @@ -0,0 +1,5 @@ +--- +"@medusajs/medusa": patch +--- + +fix(medusa): Support additional data on admin/collections diff --git a/packages/medusa/src/api/admin/collections/[id]/route.ts b/packages/medusa/src/api/admin/collections/[id]/route.ts index f898092b54..b9b0eede8e 100644 --- a/packages/medusa/src/api/admin/collections/[id]/route.ts +++ b/packages/medusa/src/api/admin/collections/[id]/route.ts @@ -1,16 +1,16 @@ -import { - AuthenticatedMedusaRequest, - MedusaResponse, -} from "@medusajs/framework/http" import { deleteCollectionsWorkflow, updateCollectionsWorkflow, } from "@medusajs/core-flows" +import { + AuthenticatedMedusaRequest, + MedusaResponse, +} from "@medusajs/framework/http" -import { AdminUpdateCollectionType } from "../validators" -import { refetchCollection } from "../helpers" -import { HttpTypes } from "@medusajs/framework/types" +import { AdditionalData, HttpTypes } from "@medusajs/framework/types" import { MedusaError } from "@medusajs/framework/utils" +import { refetchCollection } from "../helpers" +import { AdminUpdateCollectionType } from "../validators" export const GET = async ( req: AuthenticatedMedusaRequest, @@ -26,7 +26,7 @@ export const GET = async ( } export const POST = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest, res: MedusaResponse ) => { const existingCollection = await refetchCollection(req.params.id, req.scope, [ @@ -39,10 +39,13 @@ export const POST = async ( ) } + const { additional_data, ...rest } = req.validatedBody + await updateCollectionsWorkflow(req.scope).run({ input: { selector: { id: req.params.id }, - update: req.validatedBody, + update: rest, + additional_data, }, }) diff --git a/packages/medusa/src/api/admin/collections/route.ts b/packages/medusa/src/api/admin/collections/route.ts index 74e56708c9..8279402bec 100644 --- a/packages/medusa/src/api/admin/collections/route.ts +++ b/packages/medusa/src/api/admin/collections/route.ts @@ -1,16 +1,15 @@ +import { createCollectionsWorkflow } from "@medusajs/core-flows" import { AuthenticatedMedusaRequest, MedusaResponse, } from "@medusajs/framework/http" - -import { createCollectionsWorkflow } from "@medusajs/core-flows" +import { AdditionalData, HttpTypes } from "@medusajs/framework/types" import { ContainerRegistrationKeys, remoteQueryObjectFromString, } from "@medusajs/framework/utils" -import { AdminCreateCollectionType } from "./validators" import { refetchCollection } from "./helpers" -import { HttpTypes } from "@medusajs/framework/types" +import { AdminCreateCollectionType } from "./validators" export const GET = async ( req: AuthenticatedMedusaRequest, @@ -38,17 +37,13 @@ export const GET = async ( } export const POST = async ( - req: AuthenticatedMedusaRequest, + req: AuthenticatedMedusaRequest, res: MedusaResponse ) => { - const input = [ - { - ...req.validatedBody, - }, - ] + const { additional_data, ...rest } = req.validatedBody const { result } = await createCollectionsWorkflow(req.scope).run({ - input: { collections: input }, + input: { collections: [rest], additional_data }, }) const collection = await refetchCollection( diff --git a/packages/medusa/src/api/admin/collections/validators.ts b/packages/medusa/src/api/admin/collections/validators.ts index 72b7e746f5..e6c885f19f 100644 --- a/packages/medusa/src/api/admin/collections/validators.ts +++ b/packages/medusa/src/api/admin/collections/validators.ts @@ -1,10 +1,11 @@ import { z } from "zod" +import { applyAndAndOrOperators } from "../../utils/common-validators" import { createFindParams, createOperatorMap, createSelectParams, + WithAdditionalData, } from "../../utils/validators" -import { applyAndAndOrOperators } from "../../utils/common-validators" export const AdminGetCollectionParams = createSelectParams() @@ -27,16 +28,20 @@ export const AdminGetCollectionsParams = createFindParams({ .merge(AdminGetCollectionsParamsFields) .merge(applyAndAndOrOperators(AdminGetCollectionsParamsFields)) -export type AdminCreateCollectionType = z.infer -export const AdminCreateCollection = z.object({ +export type AdminCreateCollectionType = z.infer +export const CreateCollection = z.object({ title: z.string(), handle: z.string().optional(), metadata: z.record(z.unknown()).nullish(), }) -export type AdminUpdateCollectionType = z.infer -export const AdminUpdateCollection = z.object({ +export const AdminCreateCollection = WithAdditionalData(CreateCollection) + +export type AdminUpdateCollectionType = z.infer +export const UpdateCollection = z.object({ title: z.string().optional(), handle: z.string().optional(), metadata: z.record(z.unknown()).nullish(), }) + +export const AdminUpdateCollection = WithAdditionalData(UpdateCollection)