fix: empty inArray no longer crashes postgres
This commit is contained in:
@@ -59,6 +59,7 @@
|
|||||||
"fs-extra": "10.1.0",
|
"fs-extra": "10.1.0",
|
||||||
"get-port": "5.1.1",
|
"get-port": "5.1.1",
|
||||||
"glob": "8.1.0",
|
"glob": "8.1.0",
|
||||||
|
"graphql-request": "6.1.0",
|
||||||
"husky": "^8.0.3",
|
"husky": "^8.0.3",
|
||||||
"isomorphic-fetch": "3.0.0",
|
"isomorphic-fetch": "3.0.0",
|
||||||
"jest": "29.6.4",
|
"jest": "29.6.4",
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ export const findMany = async function find({
|
|||||||
const db = adapter.sessions[req.transactionID]?.db || adapter.drizzle
|
const db = adapter.sessions[req.transactionID]?.db || adapter.drizzle
|
||||||
const table = adapter.tables[tableName]
|
const table = adapter.tables[tableName]
|
||||||
|
|
||||||
let limit = limitArg
|
let limit = limitArg ?? 10
|
||||||
let totalDocs: number
|
let totalDocs: number
|
||||||
let totalPages: number
|
let totalPages: number
|
||||||
let hasPrevPage: boolean
|
let hasPrevPage: boolean
|
||||||
@@ -119,7 +119,11 @@ export const findMany = async function find({
|
|||||||
findManyArgs.where = inArray(adapter.tables[tableName].id, Object.keys(orderedIDMap))
|
findManyArgs.where = inArray(adapter.tables[tableName].id, Object.keys(orderedIDMap))
|
||||||
} else {
|
} else {
|
||||||
findManyArgs.limit = limitArg === 0 ? undefined : limitArg
|
findManyArgs.limit = limitArg === 0 ? undefined : limitArg
|
||||||
findManyArgs.offset = skip || (page - 1) * limitArg
|
|
||||||
|
const offset = skip || (page - 1) * limitArg
|
||||||
|
|
||||||
|
if (!Number.isNaN(offset)) findManyArgs.offset = offset
|
||||||
|
|
||||||
if (where) {
|
if (where) {
|
||||||
findManyArgs.where = where
|
findManyArgs.where = where
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -144,13 +144,19 @@ export async function parseParams({
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
const { operator: queryOperator, value: queryValue } = sanitizeQueryValue({
|
const sanitizedQueryValue = sanitizeQueryValue({
|
||||||
field,
|
field,
|
||||||
operator,
|
operator,
|
||||||
relationOrPath,
|
relationOrPath,
|
||||||
val,
|
val,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if (sanitizedQueryValue === null) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
const { operator: queryOperator, value: queryValue } = sanitizedQueryValue
|
||||||
|
|
||||||
if (queryOperator === 'not_equals' && queryValue !== null) {
|
if (queryOperator === 'not_equals' && queryValue !== null) {
|
||||||
constraints.push(
|
constraints.push(
|
||||||
or(
|
or(
|
||||||
@@ -159,7 +165,10 @@ export async function parseParams({
|
|||||||
ne<any>(rawColumn || table[columnName], queryValue),
|
ne<any>(rawColumn || table[columnName], queryValue),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
} else if (
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
(field.type === 'relationship' || field.type === 'upload') &&
|
(field.type === 'relationship' || field.type === 'upload') &&
|
||||||
Array.isArray(queryValue) &&
|
Array.isArray(queryValue) &&
|
||||||
operator === 'not_in'
|
operator === 'not_in'
|
||||||
@@ -170,11 +179,13 @@ export async function parseParams({
|
|||||||
IS
|
IS
|
||||||
NULL`,
|
NULL`,
|
||||||
)
|
)
|
||||||
} else {
|
|
||||||
constraints.push(
|
break
|
||||||
operatorMap[queryOperator](rawColumn || table[columnName], queryValue),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
constraints.push(
|
||||||
|
operatorMap[queryOperator](rawColumn || table[columnName], queryValue),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,11 +42,17 @@ export const sanitizeQueryValue = ({
|
|||||||
if (val.toLowerCase() === 'false') formattedValue = false
|
if (val.toLowerCase() === 'false') formattedValue = false
|
||||||
}
|
}
|
||||||
|
|
||||||
if (['all', 'in', 'not_in'].includes(operator) && typeof formattedValue === 'string') {
|
if (['all', 'in', 'not_in'].includes(operator)) {
|
||||||
formattedValue = createArrayFromCommaDelineated(formattedValue)
|
if (formattedValue === 'string') {
|
||||||
|
formattedValue = createArrayFromCommaDelineated(formattedValue)
|
||||||
|
|
||||||
if (field.type === 'number') {
|
if (field.type === 'number') {
|
||||||
formattedValue = formattedValue.map((arrayVal) => parseFloat(arrayVal))
|
formattedValue = formattedValue.map((arrayVal) => parseFloat(arrayVal))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Array.isArray(formattedValue) || formattedValue.length === 0) {
|
||||||
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -187,7 +187,6 @@
|
|||||||
"file-loader": "6.2.0",
|
"file-loader": "6.2.0",
|
||||||
"form-data": "3.0.1",
|
"form-data": "3.0.1",
|
||||||
"get-port": "5.1.1",
|
"get-port": "5.1.1",
|
||||||
"graphql-request": "6.1.0",
|
|
||||||
"mini-css-extract-plugin": "1.6.2",
|
"mini-css-extract-plugin": "1.6.2",
|
||||||
"node-fetch": "2.6.12",
|
"node-fetch": "2.6.12",
|
||||||
"nodemon": "3.0.1",
|
"nodemon": "3.0.1",
|
||||||
|
|||||||
3
pnpm-lock.yaml
generated
3
pnpm-lock.yaml
generated
@@ -96,6 +96,9 @@ importers:
|
|||||||
glob:
|
glob:
|
||||||
specifier: 8.1.0
|
specifier: 8.1.0
|
||||||
version: 8.1.0
|
version: 8.1.0
|
||||||
|
graphql-request:
|
||||||
|
specifier: 6.1.0
|
||||||
|
version: 6.1.0(graphql@16.8.1)
|
||||||
husky:
|
husky:
|
||||||
specifier: ^8.0.3
|
specifier: ^8.0.3
|
||||||
version: 8.0.3
|
version: 8.0.3
|
||||||
|
|||||||
@@ -796,4 +796,19 @@ describe('Fields', () => {
|
|||||||
expect(uploadElement.value.media.filename).toStrictEqual('payload.png')
|
expect(uploadElement.value.media.filename).toStrictEqual('payload.png')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('relationships', () => {
|
||||||
|
it('should not crash if querying with empty in operator', async () => {
|
||||||
|
const query = await payload.find({
|
||||||
|
collection: 'relationship-fields',
|
||||||
|
where: {
|
||||||
|
'relationship.value': {
|
||||||
|
in: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(query.docs).toBeDefined()
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user