fix(medusa,types,js-sdk): fix request query parameter types for store product routes (#10707)

* fix(medusa,types): fix request query parameter types for store product routes

* fix test errors
This commit is contained in:
Shahed Nasser
2024-12-23 18:10:08 +02:00
committed by GitHub
parent be9b19eb0f
commit 13ddf27c68
5 changed files with 34 additions and 22 deletions

View File

@@ -0,0 +1,7 @@
---
"@medusajs/types": patch
"@medusajs/medusa": patch
"@medusajs/js-sdk": patch
---
fix(medusa,types,js-sdk): fix request query parameter types for store product routes

View File

@@ -401,7 +401,7 @@ export class Store {
* Learn more about the `fields` property in the [API reference](https://docs.medusajs.com/api/store#select-fields-and-relations).
*/
list: async (
query?: HttpTypes.StoreProductParams,
query?: HttpTypes.StoreProductListParams,
headers?: ClientHeaders
) => {
return this.client.fetch<HttpTypes.StoreProductListResponse>(
@@ -451,7 +451,7 @@ export class Store {
*/
retrieve: async (
id: string,
query?: SelectParams,
query?: HttpTypes.StoreProductParams,
headers?: ClientHeaders
) => {
return this.client.fetch<HttpTypes.StoreProductResponse>(

View File

@@ -1,3 +1,4 @@
import { FindParams } from "../../common"
import {
BaseProductListParams,
BaseProductOptionParams,
@@ -6,29 +7,34 @@ import {
export interface StoreProductOptionParams extends BaseProductOptionParams {}
export interface StoreProductVariantParams extends BaseProductVariantParams {}
export interface StoreProductParams
extends Omit<BaseProductListParams, "tags" | "status" | "categories" | "deleted_at"> {
export interface StoreProductPricingContext {
/**
* The ID of the customer's region. This parameter must be included if you want to apply taxes on the product variant's price.
*/
region_id?: string
/**
* The customer's country code. This parameter must be included if you want to apply taxes on the product variant's price.
*/
country_code?: string
/**
* The province, which can be taken from a customer's address. This parameter helps further narrowing down the taxes applied on a the product variant's prices.
*/
province?: string
/**
* The ID of the customer's cart, if available. If set, the cart's region and shipping address's country code and province are used instead of the `region_id`, `country_code`, and `province` parameters.
*/
cart_id?: string
}
export interface StoreProductParams extends FindParams, StoreProductPricingContext {}
export interface StoreProductListParams
extends Omit<BaseProductListParams, "tags" | "status" | "categories" | "deleted_at">, StoreProductPricingContext {
/**
* Filter by the product's tag(s).
*/
tag_id?: string | string[]
/**
* The ID of the region the products are being viewed from. This is required if you're retrieving product variant prices with taxes.
*
* @privateRemarks
* The region ID and currency_code are not params, but are used for the pricing context. Maybe move to separate type definition.
*/
region_id?: string
/**
* The currency code to retrieve prices in.
*/
currency_code?: string
/**
* Filter by the product's variants.
*/
variants?: Pick<StoreProductVariantParams, "options">
/**
* The province the products are being viewed from. This is useful to narrow down the tax context when calculating product variant prices with taxes.
*/
province?: string
}

View File

@@ -6,11 +6,10 @@ import {
RequestWithContext,
wrapProductsWithTaxPrices,
} from "../helpers"
import { StoreGetProductParamsType } from "../validators"
import { HttpTypes } from "@medusajs/framework/types"
export const GET = async (
req: RequestWithContext<StoreGetProductParamsType>,
req: RequestWithContext<HttpTypes.StoreProductParams>,
res: MedusaResponse<HttpTypes.StoreProductResponse>
) => {
const withInventoryQuantity = req.remoteQueryConfig.fields.some((field) =>

View File

@@ -9,7 +9,7 @@ import { RequestWithContext, wrapProductsWithTaxPrices } from "./helpers"
import { HttpTypes } from "@medusajs/framework/types"
export const GET = async (
req: RequestWithContext<HttpTypes.StoreProductParams>,
req: RequestWithContext<HttpTypes.StoreProductListParams>,
res: MedusaResponse<HttpTypes.StoreProductListResponse>
) => {
const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY)