diff --git a/workloads/commerce-backend/src/api/store/search/route.ts b/workloads/commerce-backend/src/api/store/search/route.ts index 0c18948..1c94975 100644 --- a/workloads/commerce-backend/src/api/store/search/route.ts +++ b/workloads/commerce-backend/src/api/store/search/route.ts @@ -1,5 +1,8 @@ import type { MedusaRequest, MedusaResponse } from "@medusajs/framework"; -import { ContainerRegistrationKeys } from "@medusajs/framework/utils"; +import { + ContainerRegistrationKeys, + QueryContext, +} from "@medusajs/framework/utils"; import { MEILISEARCH_MODULE, type MeiliSearchService, @@ -76,6 +79,13 @@ export async function GET(req: MedusaRequest, res: MedusaResponse) { const q = stringParam(req.query, "q") ?? ""; const limit = numberParam(req.query, "limit") ?? 24; const offset = numberParam(req.query, "offset") ?? 0; + // calculated_price exige region_id/currency_code en el contexto de + // pricing o query.graph tira "Method calculatePrices requires + // currency_code in the pricing context" (mismo error que ya rompio el + // job de sync -- ver medusa-config.ts). El storefront ya manda + // region_id contra /store/products (medusa.ts, regionId()); esta ruta + // espera el mismo query param. + const regionId = stringParam(req.query, "region_id"); const filterParts: string[] = []; for (const facet of ["category", "collection", "brand", "ageRange"]) { @@ -143,6 +153,9 @@ export async function GET(req: MedusaRequest, res: MedusaResponse) { entity: "product", fields: PRODUCT_FIELDS, filters: { id: productIds }, + context: regionId + ? { variants: { calculated_price: QueryContext({ region_id: regionId }) } } + : {}, }); // Preserva el ranking de relevancia de Meilisearch -- query.graph no