fix(orchestration): Ids wrongly processed when using operators map (#9781)

* fix(orchestration): Ids processing when using operators map

* fix(orchestration): Ids processing when using operators map

* address feedback

* address feedback
This commit is contained in:
Adrien de Peretti
2024-10-25 11:10:35 +02:00
committed by GitHub
parent b9c787ac2b
commit f295596df2
4 changed files with 57 additions and 3 deletions
@@ -10,8 +10,10 @@ import {
} from "@medusajs/types"
import {
deduplicate,
FilterOperatorMap,
GraphQLUtils,
isDefined,
isObject,
isString,
MedusaError,
} from "@medusajs/utils"
@@ -440,9 +442,15 @@ export class RemoteJoiner {
}> {
const { expand, pkField, ids, relationship, options } = params
let uniqueIds = Array.isArray(ids) ? ids : ids ? [ids] : undefined
let uniqueIds: unknown[] | undefined
if (ids != null) {
const isIdsUsingOperatorMap =
isObject(ids) &&
Object.keys(ids).some((key) => !!FilterOperatorMap[key])
uniqueIds = isIdsUsingOperatorMap ? ids : Array.isArray(ids) ? ids : [ids]
}
if (uniqueIds) {
if (uniqueIds && Array.isArray(uniqueIds)) {
const isCompositeKey = Array.isArray(uniqueIds[0])
if (isCompositeKey) {
const seen = new Set()
@@ -0,0 +1,23 @@
import { OperatorMap } from "@medusajs/types"
export const FilterOperatorMap: { [K in keyof OperatorMap<string>]: string } = {
$and: "$and",
$or: "$or",
$eq: "$eq",
$ne: "$ne",
$in: "$in",
$nin: "$nin",
$not: "$not",
$gt: "$gt",
$gte: "$gte",
$lt: "$lt",
$lte: "$lte",
$like: "$like",
$re: "$re",
$ilike: "$ilike",
$fulltext: "$fulltext",
$overlap: "$overlap",
$contains: "$contains",
$contained: "$contained",
$exists: "$exists",
}
+1
View File
@@ -74,3 +74,4 @@ export * from "./trim-zeros"
export * from "./upper-case-first"
export * from "./validate-handle"
export * from "./wrap-handler"
export * from "./filter-operator-map"