diff --git a/.changeset/new-flowers-remember.md b/.changeset/new-flowers-remember.md new file mode 100644 index 0000000000..b73536190d --- /dev/null +++ b/.changeset/new-flowers-remember.md @@ -0,0 +1,5 @@ +--- +"@medusajs/medusa": patch +--- + +Fixes free text search for PriceList Products diff --git a/integration-tests/api/__tests__/admin/price-list.js b/integration-tests/api/__tests__/admin/price-list.js index afc162fe13..c5520d7336 100644 --- a/integration-tests/api/__tests__/admin/price-list.js +++ b/integration-tests/api/__tests__/admin/price-list.js @@ -1244,6 +1244,29 @@ describe("/admin/price-lists", () => { expect.objectContaining({ id: "test-prod-2" }), ]) }) + + it("lists products using free text search", async () => { + const api = useApi() + + const response = await api + .get(`/admin/price-lists/test-list/products?q=MedusaHeadphones`, { + headers: { + Authorization: "Bearer test_token", + }, + }) + .catch((err) => { + console.warn(err.response.data) + }) + + expect(response.status).toEqual(200) + expect(response.data.count).toEqual(1) + expect(response.data.products).toEqual([ + expect.objectContaining({ + id: "test-prod-1", + title: "MedusaHeadphones", + }), + ]) + }) }) describe("delete prices from price list related to the specified product or variant", () => { diff --git a/packages/medusa/src/repositories/price-list.ts b/packages/medusa/src/repositories/price-list.ts index 38012f9fc2..0cbe7512fb 100644 --- a/packages/medusa/src/repositories/price-list.ts +++ b/packages/medusa/src/repositories/price-list.ts @@ -8,7 +8,6 @@ import { } from "typeorm" import { PriceList } from "../models/price-list" import { CustomFindOptions, ExtendedFindConfig } from "../types/common" -import { CustomerGroup } from "../models" import { FilterablePriceListProps } from "../types/price-list" export type PriceListFindOptions = CustomFindOptions< @@ -111,10 +110,10 @@ export class PriceListRepository extends Repository { .take(query.take) if (groups) { - qb.leftJoinAndSelect( - "price_list.customer_groups", - "group" - ).andWhere("group.id IN (:...ids)", { ids: groups.value }) + qb.leftJoinAndSelect("price_list.customer_groups", "group").andWhere( + "group.id IN (:...ids)", + { ids: groups.value } + ) } if (query.relations?.length) { diff --git a/packages/medusa/src/repositories/product.ts b/packages/medusa/src/repositories/product.ts index 6935e01d35..b7f039f516 100644 --- a/packages/medusa/src/repositories/product.ts +++ b/packages/medusa/src/repositories/product.ts @@ -105,9 +105,7 @@ export class ProductRepository extends Repository { return [entities, count] } - private getGroupedRelations( - relations: string[] - ): { + private getGroupedRelations(relations: string[]): { [toplevel: string]: string[] } { const groupedRelations: { [toplevel: string]: string[] } = {} @@ -231,9 +229,8 @@ export class ProductRepository extends Repository { ) const entitiesAndRelations = entitiesIdsWithRelations.concat(entities) - const entitiesToReturn = this.mergeEntitiesWithRelations( - entitiesAndRelations - ) + const entitiesToReturn = + this.mergeEntitiesWithRelations(entitiesAndRelations) return [entitiesToReturn, count] } @@ -279,9 +276,8 @@ export class ProductRepository extends Repository { ) const entitiesAndRelations = entitiesIdsWithRelations.concat(entities) - const entitiesToReturn = this.mergeEntitiesWithRelations( - entitiesAndRelations - ) + const entitiesToReturn = + this.mergeEntitiesWithRelations(entitiesAndRelations) return entitiesToReturn } @@ -376,6 +372,10 @@ export class ProductRepository extends Repository { delete where.title } + if ("price_list_id" in where) { + delete where?.price_list_id + } + return { ...options, where,