fix(link-modules, utils): remove limits on queries when primary-key is provided (#5732)
This commit is contained in:
6
.changeset/mighty-windows-perform.md
Normal file
6
.changeset/mighty-windows-perform.md
Normal 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
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user