diff --git a/.changeset/healthy-garlics-retire.md b/.changeset/healthy-garlics-retire.md new file mode 100644 index 0000000000..9110efd6a5 --- /dev/null +++ b/.changeset/healthy-garlics-retire.md @@ -0,0 +1,6 @@ +--- +"@medusajs/medusa": patch +"@medusajs/utils": patch +--- + +chore(medusa, utils): rename buildLegacyFieldsListFrom to objectToStringPath diff --git a/packages/inventory/src/utils/query.ts b/packages/inventory/src/utils/query.ts index b7eaa41c9b..9506d8c282 100644 --- a/packages/inventory/src/utils/query.ts +++ b/packages/inventory/src/utils/query.ts @@ -3,7 +3,7 @@ import { FilterableInventoryItemProps, FindConfig, } from "@medusajs/types" -import { buildLegacyFieldsListFrom, buildQuery } from "@medusajs/utils" +import { objectToStringPath, buildQuery } from "@medusajs/utils" import { EntityManager, FindOptionsWhere, ILike } from "typeorm" import { InventoryItem } from "../models" @@ -60,7 +60,7 @@ export function getListQuery( } if (query.select) { - const legacySelect = buildLegacyFieldsListFrom(query.select) + const legacySelect = objectToStringPath(query.select) queryBuilder.select(legacySelect.map((s) => "inv_item." + s)) } diff --git a/packages/medusa/src/repositories/customer-group.ts b/packages/medusa/src/repositories/customer-group.ts index 4d0af40277..0ad2a96bb3 100644 --- a/packages/medusa/src/repositories/customer-group.ts +++ b/packages/medusa/src/repositories/customer-group.ts @@ -13,7 +13,7 @@ import { queryEntityWithIds, queryEntityWithoutRelations, } from "../utils/repository" -import { buildLegacyFieldsListFrom } from "../utils" +import { objectToStringPath } from "@medusajs/utils" import { dataSource } from "../loaders/database" export type DefaultWithoutRelations = Omit< @@ -135,10 +135,10 @@ export const CustomerGroupRepository = dataSource return [toReturn, toReturn.length] } - const legacyRelations = buildLegacyFieldsListFrom(relations) + const legacyRelations = objectToStringPath(relations) const groupedRelations = getGroupedRelations(legacyRelations) - const legacySelect = buildLegacyFieldsListFrom( + const legacySelect = objectToStringPath( idsOrOptionsWithoutRelations.select ) const entitiesIdsWithRelations = await queryEntityWithIds( diff --git a/packages/medusa/src/repositories/order.ts b/packages/medusa/src/repositories/order.ts index 6c5e0fe2c8..38b7cd96f6 100644 --- a/packages/medusa/src/repositories/order.ts +++ b/packages/medusa/src/repositories/order.ts @@ -1,7 +1,7 @@ import { flatten, groupBy, map, merge } from "lodash" import { FindManyOptions, FindOptionsRelations, In } from "typeorm" import { Order } from "../models" -import { buildLegacyFieldsListFrom } from "../utils" +import { objectToStringPath } from "@medusajs/utils" import { dataSource } from "../loaders/database" const ITEMS_REL_NAME = "items" @@ -16,7 +16,7 @@ export const OrderRepository = dataSource.getRepository(Order).extend({ const entitiesIds = entities.map(({ id }) => id) const groupedRelations: { [topLevel: string]: string[] } = {} - for (const rel of buildLegacyFieldsListFrom(relations)) { + for (const rel of objectToStringPath(relations)) { const [topLevel] = rel.split(".") if (groupedRelations[topLevel]) { groupedRelations[topLevel].push(rel) diff --git a/packages/medusa/src/repositories/product-category.ts b/packages/medusa/src/repositories/product-category.ts index f45402976e..2df1fa1772 100644 --- a/packages/medusa/src/repositories/product-category.ts +++ b/packages/medusa/src/repositories/product-category.ts @@ -9,7 +9,7 @@ import { import { ProductCategory } from "../models/product-category" import { ExtendedFindConfig, QuerySelector } from "../types/common" import { dataSource } from "../loaders/database" -import { buildLegacyFieldsListFrom } from "../utils" +import { objectToStringPath } from "@medusajs/utils" import { isEmpty } from "lodash" export const ProductCategoryRepository = dataSource @@ -44,8 +44,8 @@ export const ProductCategoryRepository = dataSource const options_ = { ...options } options_.where = options_.where as FindOptionsWhere - const columnsSelected = buildLegacyFieldsListFrom(options_.select) - const relationsSelected = buildLegacyFieldsListFrom(options_.relations) + const columnsSelected = objectToStringPath(options_.select) + const relationsSelected = objectToStringPath(options_.relations) const fetchSelectColumns = (relationName: string): string[] => { const modelColumns = this.metadata.ownColumns.map( diff --git a/packages/medusa/src/repositories/product.ts b/packages/medusa/src/repositories/product.ts index 78c6a90ea7..1c789c8e1f 100644 --- a/packages/medusa/src/repositories/product.ts +++ b/packages/medusa/src/repositories/product.ts @@ -10,10 +10,10 @@ import { ExtendedFindConfig } from "../types/common" import { dataSource } from "../loaders/database" import { ProductFilterOptions } from "../types/product" import { - buildLegacyFieldsListFrom, - fetchCategoryDescendantsIds, isObject, + fetchCategoryDescendantsIds, } from "../utils" +import { objectToStringPath } from "@medusajs/utils" export const ProductRepository = dataSource.getRepository(Product).extend({ async bulkAddToCollection( @@ -89,7 +89,7 @@ export const ProductRepository = dataSource.getRepository(Product).extend({ // https://github.com/typeorm/typeorm/issues/6294 // Cleanup the repo and fix order/skip/take and relation load strategy when those issues are resolved - const orderFieldsCollectionPointSeparated = buildLegacyFieldsListFrom( + const orderFieldsCollectionPointSeparated = objectToStringPath( options.order ?? {} ) diff --git a/packages/medusa/src/repositories/tax-rate.ts b/packages/medusa/src/repositories/tax-rate.ts index c5788737db..12e8029c36 100644 --- a/packages/medusa/src/repositories/tax-rate.ts +++ b/packages/medusa/src/repositories/tax-rate.ts @@ -16,7 +16,7 @@ import { } from "../models" import { TaxRateListByConfig } from "../types/tax-rate" import { isDefined } from "medusa-core-utils" -import { buildLegacyFieldsListFrom } from "../utils" +import { objectToStringPath } from "@medusajs/utils" import { dataSource } from "../loaders/database" const resolveableFields = [ @@ -33,7 +33,7 @@ export const TaxRateRepository = dataSource.getRepository(TaxRate).extend({ const resolverFields: string[] = [] if (isDefined(findOptions.select)) { const selectableCols: (keyof TaxRate)[] = [] - const legacySelect = buildLegacyFieldsListFrom( + const legacySelect = objectToStringPath( findOptions.select as FindOptionsSelect ) for (const k of legacySelect) { diff --git a/packages/medusa/src/utils/build-query.ts b/packages/medusa/src/utils/build-query.ts index 9411e46372..523359b44d 100644 --- a/packages/medusa/src/utils/build-query.ts +++ b/packages/medusa/src/utils/build-query.ts @@ -139,6 +139,7 @@ function buildWhere( /** * Revert new object structure of find options to the legacy structure of previous version + * @deprecated in favor of import { objectToStringPath } from "@medusajs/utils" * @example * input: { * test: { diff --git a/packages/utils/src/common/build-query.ts b/packages/utils/src/common/build-query.ts index 8f5b3b7aa5..91fd2acef0 100644 --- a/packages/utils/src/common/build-query.ts +++ b/packages/utils/src/common/build-query.ts @@ -138,7 +138,8 @@ function buildWhere( } /** - * Revert new object structure of find options to the legacy structure of previous version + * Converts a typeorms structure of find options to an + * array of string paths * @example * input: { * test: { @@ -153,7 +154,7 @@ function buildWhere( * output: ['test.test1', 'test.test2', 'test.test3.test4', 'test2'] * @param input */ -export function buildLegacyFieldsListFrom( +export function objectToStringPath( input: | FindOptionsWhere | FindOptionsSelect @@ -168,7 +169,7 @@ export function buildLegacyFieldsListFrom( for (const key of Object.keys(input)) { if (input[key] != undefined && typeof input[key] === "object") { - const deepRes = buildLegacyFieldsListFrom(input[key]) + const deepRes = objectToStringPath(input[key]) const items = deepRes.reduce((acc, val) => { acc.push(`${key}.${val}`)