fix(link-modules, utils): remove limits on queries when primary-key is provided (#5732)

This commit is contained in:
Philip Korsholm
2023-11-27 15:42:25 +00:00
committed by GitHub
parent 3bcf08c0cb
commit de8f748674
4 changed files with 35 additions and 6 deletions

View File

@@ -0,0 +1,6 @@
---
"@medusajs/link-modules": patch
"@medusajs/utils": patch
---
fix(link-modules, utils): remove limtis if primary key exists in filter for buildquery and no limit is present

View File

@@ -11,11 +11,12 @@ import {
import {
InjectManager,
InjectTransactionManager,
isDefined,
mapObjectTo,
MapToConfig,
MedusaContext,
MedusaError,
ModulesSdkUtils,
mapObjectTo,
} from "@medusajs/utils"
import { LinkService } from "@services"
import { shouldForceTransaction } from "../utils"
@@ -126,6 +127,10 @@ export default class LinkModuleService<TLink> implements ILinkModule {
config: FindConfig<unknown> = {},
@MedusaContext() sharedContext: Context = {}
): Promise<unknown[]> {
if (!isDefined(config.take)) {
config.take = null
}
const rows = await this.linkService_.list(filters, config, sharedContext)
return await this.baseRepository_.serialize<object[]>(rows)
@@ -137,6 +142,10 @@ export default class LinkModuleService<TLink> implements ILinkModule {
config: FindConfig<unknown> = {},
@MedusaContext() sharedContext: Context = {}
): Promise<[unknown[], number]> {
if (!isDefined(config.take)) {
config.take = null
}
const [rows, count] = await this.linkService_.listAndCount(
filters,
config,

View File

@@ -19,7 +19,7 @@ describe("Product service", function () {
},
options: {
fields: undefined,
limit: 15,
limit: undefined,
offset: 0,
populate: [],
withDeleted: undefined,
@@ -44,7 +44,7 @@ describe("Product service", function () {
},
options: {
fields: undefined,
limit: 15,
limit: undefined,
offset: 0,
populate: [],
withDeleted: undefined,

View File

@@ -1,15 +1,29 @@
import { DAL, FindConfig } from "@medusajs/types"
import { deduplicate, isObject } from "../common"
import { deduplicate, isDefined, isObject } from "../common"
import { SoftDeletableFilterKey } from "../dal"
export function buildQuery<T = any, TDto = any>(
filters: Record<string, any> = {},
config: FindConfig<TDto> = {}
config: FindConfig<TDto> & { primaryKeyFields?: string | string[] } = {}
): DAL.FindOptions<T> {
const where: DAL.FilterQuery<T> = {}
buildWhere(filters, where)
const primaryKeyFieldArray = isDefined(config.primaryKeyFields)
? !Array.isArray(config.primaryKeyFields)
? [config.primaryKeyFields]
: config.primaryKeyFields
: ["id"]
const whereHasPrimaryKeyFields = primaryKeyFieldArray.some(
(pkField) => !!where[pkField]
)
const defaultLimit = whereHasPrimaryKeyFields ? undefined : 15
delete config.primaryKeyFields
const findOptions: DAL.OptionsQuery<T, any> = {
populate: deduplicate(config.relations ?? []),
fields: config.select as string[],
@@ -17,7 +31,7 @@ export function buildQuery<T = any, TDto = any>(
(Number.isSafeInteger(config.take) && config.take! >= 0) ||
null === config.take
? config.take ?? undefined
: 15,
: defaultLimit,
offset:
(Number.isSafeInteger(config.skip) && config.skip! >= 0) ||
null === config.skip