Compare commits
8 Commits
@payloadcm
...
db-postgre
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b9e87bb4d | ||
|
|
ff5e174497 | ||
|
|
34017e1758 | ||
|
|
23d95526ab | ||
|
|
59b87fdb21 | ||
|
|
f2ac1f7d48 | ||
|
|
8d4f39af5e | ||
|
|
c4ac341d75 |
@@ -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",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@payloadcms/db-postgres",
|
"name": "@payloadcms/db-postgres",
|
||||||
"version": "0.1.7",
|
"version": "0.1.8",
|
||||||
"description": "The officially supported Postgres database adapter for Payload",
|
"description": "The officially supported Postgres database adapter for Payload",
|
||||||
"repository": "https://github.com/payloadcms/payload",
|
"repository": "https://github.com/payloadcms/payload",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -148,13 +148,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(
|
||||||
@@ -163,7 +169,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'
|
||||||
@@ -174,7 +183,10 @@ export async function parseParams({
|
|||||||
IS
|
IS
|
||||||
NULL`,
|
NULL`,
|
||||||
)
|
)
|
||||||
} else {
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
constraints.push(
|
constraints.push(
|
||||||
operatorMap[queryOperator](rawColumn || table[columnName], queryValue),
|
operatorMap[queryOperator](rawColumn || table[columnName], queryValue),
|
||||||
)
|
)
|
||||||
@@ -185,7 +197,6 @@ export async function parseParams({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (constraints.length > 0) {
|
if (constraints.length > 0) {
|
||||||
if (result) {
|
if (result) {
|
||||||
result = and(result, ...constraints)
|
result = and(result, ...constraints)
|
||||||
|
|||||||
@@ -42,7 +42,8 @@ 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)) {
|
||||||
|
if (typeof formattedValue === 'string') {
|
||||||
formattedValue = createArrayFromCommaDelineated(formattedValue)
|
formattedValue = createArrayFromCommaDelineated(formattedValue)
|
||||||
|
|
||||||
if (field.type === 'number') {
|
if (field.type === 'number') {
|
||||||
@@ -50,6 +51,11 @@ export const sanitizeQueryValue = ({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!Array.isArray(formattedValue) || formattedValue.length === 0) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (field.type === 'number' && typeof formattedValue === 'string') {
|
if (field.type === 'number' && typeof formattedValue === 'string') {
|
||||||
formattedValue = Number(val)
|
formattedValue = Number(val)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "payload",
|
"name": "payload",
|
||||||
"version": "2.0.6",
|
"version": "2.0.7",
|
||||||
"description": "Node, React and MongoDB Headless CMS and Application Framework",
|
"description": "Node, React and MongoDB Headless CMS and Application Framework",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "./dist/index.js",
|
"main": "./dist/index.js",
|
||||||
@@ -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",
|
||||||
|
|||||||
6
pnpm-lock.yaml
generated
6
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
|
||||||
@@ -940,9 +943,6 @@ importers:
|
|||||||
get-port:
|
get-port:
|
||||||
specifier: 5.1.1
|
specifier: 5.1.1
|
||||||
version: 5.1.1
|
version: 5.1.1
|
||||||
graphql-request:
|
|
||||||
specifier: 6.1.0
|
|
||||||
version: 6.1.0(graphql@16.8.1)
|
|
||||||
mini-css-extract-plugin:
|
mini-css-extract-plugin:
|
||||||
specifier: 1.6.2
|
specifier: 1.6.2
|
||||||
version: 1.6.2(webpack@5.88.2)
|
version: 1.6.2(webpack@5.88.2)
|
||||||
|
|||||||
79
scripts/lib/getPackageDetails.ts
Normal file
79
scripts/lib/getPackageDetails.ts
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
import path from 'path'
|
||||||
|
import fse from 'fs-extra'
|
||||||
|
import chalk from 'chalk'
|
||||||
|
import chalkTemplate from 'chalk-template'
|
||||||
|
import simpleGit from 'simple-git'
|
||||||
|
|
||||||
|
const git = simpleGit()
|
||||||
|
const packagesDir = path.resolve(__dirname, '../../packages')
|
||||||
|
|
||||||
|
export type PackageDetails = {
|
||||||
|
name: string
|
||||||
|
newCommits: number
|
||||||
|
shortName: string
|
||||||
|
packagePath: string
|
||||||
|
publishedVersion: string
|
||||||
|
publishDate: string
|
||||||
|
version: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getPackageDetails = async (): Promise<PackageDetails[]> => {
|
||||||
|
const packageDirs = fse.readdirSync(packagesDir).filter((d) => d !== 'eslint-config-payload')
|
||||||
|
const packageDetails = await Promise.all(
|
||||||
|
packageDirs.map(async (dirName) => {
|
||||||
|
const packageJson = await fse.readJson(`${packagesDir}/${dirName}/package.json`)
|
||||||
|
const isPublic = packageJson.private !== true
|
||||||
|
if (!isPublic) return null
|
||||||
|
|
||||||
|
// Get published version from npm
|
||||||
|
const json = await fetch(`https://registry.npmjs.org/${packageJson.name}`).then((res) =>
|
||||||
|
res.json(),
|
||||||
|
)
|
||||||
|
|
||||||
|
const publishedVersion = json?.['dist-tags']?.latest
|
||||||
|
const publishDate = json?.time?.[publishedVersion]
|
||||||
|
|
||||||
|
const prevGitTag = `${dirName}/${packageJson.version}`
|
||||||
|
const prevGitTagHash = await git.revparse(prevGitTag)
|
||||||
|
|
||||||
|
const newCommits = await git.log({
|
||||||
|
from: prevGitTagHash,
|
||||||
|
file: `packages/${dirName}`,
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
name: packageJson.name as string,
|
||||||
|
newCommits: newCommits.total,
|
||||||
|
shortName: dirName,
|
||||||
|
packagePath: `packages/${dirName}`,
|
||||||
|
publishedVersion,
|
||||||
|
publishDate,
|
||||||
|
version: packageJson.version,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
|
||||||
|
return packageDetails.filter((p): p is Exclude<typeof p, null> => p !== null)
|
||||||
|
}
|
||||||
|
|
||||||
|
export const showPackageDetails = (details: PackageDetails[]) => {
|
||||||
|
console.log(chalkTemplate`
|
||||||
|
|
||||||
|
{bold Packages:}
|
||||||
|
|
||||||
|
${details
|
||||||
|
.map((p) => {
|
||||||
|
const name = p?.newCommits ? chalk.bold.green(p?.shortName.padEnd(28)) : p?.shortName.padEnd(28)
|
||||||
|
const publishData = `${p?.publishedVersion} at ${p?.publishDate
|
||||||
|
.split(':')
|
||||||
|
.slice(0, 2)
|
||||||
|
.join(':')
|
||||||
|
.replace('T', ' ')}`
|
||||||
|
const newCommits = `${p?.newCommits ? `${chalk.bold.green(p?.newCommits)} new commits` : ''}`
|
||||||
|
|
||||||
|
return ` ${name}${publishData} ${newCommits}`
|
||||||
|
})
|
||||||
|
.join('\n')}
|
||||||
|
|
||||||
|
`)
|
||||||
|
}
|
||||||
@@ -1,74 +1,10 @@
|
|||||||
import path from 'path'
|
import { getPackageDetails, showPackageDetails } from './lib/getPackageDetails'
|
||||||
import fse from 'fs-extra'
|
|
||||||
import chalk from 'chalk'
|
|
||||||
import chalkTemplate from 'chalk-template'
|
|
||||||
import simpleGit from 'simple-git'
|
|
||||||
|
|
||||||
const git = simpleGit()
|
|
||||||
|
|
||||||
const packagesDir = path.resolve(__dirname, '../packages')
|
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
// List all public packages excluding eslint-config-payload
|
const packageDetails = await getPackageDetails()
|
||||||
const packageDirs = fse.readdirSync(packagesDir).filter((d) => d !== 'eslint-config-payload')
|
showPackageDetails(packageDetails)
|
||||||
const packageDetails = await Promise.all(
|
|
||||||
packageDirs.map(async (dirName) => {
|
|
||||||
const packageJson = await fse.readJson(`${packagesDir}/${dirName}/package.json`)
|
|
||||||
const isPublic = packageJson.private !== true
|
|
||||||
if (!isPublic) return null
|
|
||||||
|
|
||||||
// Get published version from npm
|
|
||||||
const json = await fetch(`https://registry.npmjs.org/${packageJson.name}`).then((res) =>
|
|
||||||
res.json(),
|
|
||||||
)
|
|
||||||
|
|
||||||
const publishedVersion = json?.['dist-tags']?.latest
|
|
||||||
const publishDate = json?.time?.[publishedVersion]
|
|
||||||
|
|
||||||
const prevGitTag = `${dirName}/${packageJson.version}`
|
|
||||||
const prevGitTagHash = await git.revparse(prevGitTag)
|
|
||||||
|
|
||||||
const newCommits = await git.log({
|
|
||||||
from: prevGitTagHash,
|
|
||||||
file: `packages/${dirName}`,
|
|
||||||
})
|
|
||||||
|
|
||||||
return {
|
|
||||||
name: packageJson.name,
|
|
||||||
newCommits: newCommits.total,
|
|
||||||
packageDir: dirName,
|
|
||||||
packagePath: `packages/${dirName}`,
|
|
||||||
publishedVersion,
|
|
||||||
publishDate,
|
|
||||||
version: packageJson.version,
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
console.log(chalkTemplate`
|
|
||||||
|
|
||||||
{bold Packages:}
|
|
||||||
|
|
||||||
${packageDetails
|
|
||||||
.map((p) => {
|
|
||||||
const name = p?.newCommits
|
|
||||||
? chalk.bold.green(p?.packageDir.padEnd(28))
|
|
||||||
: p?.packageDir.padEnd(28)
|
|
||||||
const publishData = `${p?.publishedVersion} at ${p?.publishDate
|
|
||||||
.split(':')
|
|
||||||
.slice(0, 2)
|
|
||||||
.join(':')
|
|
||||||
.replace('T', ' ')}`
|
|
||||||
const newCommits = `${p?.newCommits ? `${chalk.bold.green(p?.newCommits)} new commits` : ''}`
|
|
||||||
|
|
||||||
return ` ${name}${publishData} ${newCommits}`
|
|
||||||
})
|
|
||||||
.join('\n')}
|
|
||||||
|
|
||||||
`)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// console.log(packageNames)
|
|
||||||
|
|
||||||
main().catch((error) => {
|
main().catch((error) => {
|
||||||
console.error(error)
|
console.error(error)
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
|
|||||||
@@ -4,32 +4,49 @@ import chalk from 'chalk'
|
|||||||
import prompts from 'prompts'
|
import prompts from 'prompts'
|
||||||
import minimist from 'minimist'
|
import minimist from 'minimist'
|
||||||
import chalkTemplate from 'chalk-template'
|
import chalkTemplate from 'chalk-template'
|
||||||
|
import { PackageDetails, getPackageDetails, showPackageDetails } from './lib/getPackageDetails'
|
||||||
|
|
||||||
const execOpts: ExecSyncOptions = { stdio: 'inherit' }
|
const execOpts: ExecSyncOptions = { stdio: 'inherit' }
|
||||||
const args = minimist(process.argv.slice(2))
|
const args = minimist(process.argv.slice(2))
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
const { _: packageNames, tag = 'latest', bump = 'patch' } = args
|
const { tag = 'latest', bump = 'patch' } = args
|
||||||
|
|
||||||
if (packageNames.length === 0) {
|
const packageDetails = await getPackageDetails()
|
||||||
|
showPackageDetails(packageDetails)
|
||||||
|
|
||||||
|
const { packagesToRelease } = (await prompts({
|
||||||
|
type: 'multiselect',
|
||||||
|
name: 'packagesToRelease',
|
||||||
|
message: 'Select packages to release',
|
||||||
|
instructions: 'Space to select. Enter to submit.',
|
||||||
|
choices: packageDetails.map((p) => {
|
||||||
|
const title = p?.newCommits ? chalk.bold.green(p?.shortName) : p?.shortName
|
||||||
|
return {
|
||||||
|
title,
|
||||||
|
value: p.shortName,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
})) as { packagesToRelease: string[] }
|
||||||
|
|
||||||
|
if (!packagesToRelease) {
|
||||||
|
abort()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (packagesToRelease.length === 0) {
|
||||||
abort('Please specify a package to publish')
|
abort('Please specify a package to publish')
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packageNames.find((p) => p === 'payload' && packageNames.length > 1)) {
|
if (packagesToRelease.find((p) => p === 'payload' && packagesToRelease.length > 1)) {
|
||||||
abort('Cannot publish payload with other packages')
|
abort('Cannot publish payload with other packages. Release Payload first.')
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get current version of each package from package.json
|
const packageMap = packageDetails.reduce(
|
||||||
const packageDetails = await Promise.all(
|
(acc, p) => {
|
||||||
packageNames.map(async (packageName) => {
|
acc[p.shortName] = p
|
||||||
const packageDir = `packages/${packageName}`
|
return acc
|
||||||
if (!(await fse.pathExists(packageDir))) {
|
},
|
||||||
abort(`Package path ${packageDir} does not exist`)
|
{} as Record<string, PackageDetails>,
|
||||||
}
|
|
||||||
const packageObj = await fse.readJson(`${packageDir}/package.json`)
|
|
||||||
|
|
||||||
return { name: packageName, version: packageObj.version, dir: packageDir }
|
|
||||||
}),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
console.log(chalkTemplate`
|
console.log(chalkTemplate`
|
||||||
@@ -38,10 +55,15 @@ async function main() {
|
|||||||
{bold.yellow Bump: ${bump}}
|
{bold.yellow Bump: ${bump}}
|
||||||
{bold.yellow Tag: ${tag}}
|
{bold.yellow Tag: ${tag}}
|
||||||
|
|
||||||
${packageDetails.map((p) => ` ${p.name} - current: ${p.version}`).join('\n')}
|
${packagesToRelease
|
||||||
|
.map((p) => {
|
||||||
|
const { shortName, version } = packageMap[p]
|
||||||
|
return ` ${shortName.padEnd(24)} ${version}`
|
||||||
|
})
|
||||||
|
.join('\n')}
|
||||||
`)
|
`)
|
||||||
|
|
||||||
const confirmPublish = await confirm(`Publish ${packageNames.length} package(s)?`)
|
const confirmPublish = await confirm(`Publish ${packagesToRelease.length} package(s)?`)
|
||||||
|
|
||||||
if (!confirmPublish) {
|
if (!confirmPublish) {
|
||||||
abort()
|
abort()
|
||||||
@@ -49,26 +71,26 @@ ${packageDetails.map((p) => ` ${p.name} - current: ${p.version}`).join('\n')}
|
|||||||
|
|
||||||
const results: { name: string; success: boolean }[] = []
|
const results: { name: string; success: boolean }[] = []
|
||||||
|
|
||||||
for (const pkg of packageDetails) {
|
for (const pkg of packagesToRelease) {
|
||||||
const { dir, name } = pkg
|
const { packagePath, shortName } = packageMap[pkg]
|
||||||
|
|
||||||
try {
|
try {
|
||||||
console.log(chalk.bold(`\n\nPublishing ${name}...\n\n`))
|
console.log(chalk.bold(`\n\nPublishing ${shortName}...\n\n`))
|
||||||
|
|
||||||
execSync(`npm --no-git-tag-version --prefix ${dir} version ${bump}`, execOpts)
|
execSync(`npm --no-git-tag-version --prefix ${packagePath} version ${bump}`, execOpts)
|
||||||
execSync(`git add ${dir}/package.json`, execOpts)
|
execSync(`git add ${packagePath}/package.json`, execOpts)
|
||||||
|
|
||||||
const packageObj = await fse.readJson(`${dir}/package.json`)
|
const packageObj = await fse.readJson(`${packagePath}/package.json`)
|
||||||
const newVersion = packageObj.version
|
const newVersion = packageObj.version
|
||||||
|
|
||||||
const tagName = `${name}/${newVersion}`
|
const tagName = `${shortName}/${newVersion}`
|
||||||
execSync(`git commit -m "chore(release): ${tagName}"`, execOpts)
|
execSync(`git commit -m "chore(release): ${tagName}"`, execOpts)
|
||||||
execSync(`git tag -a ${tagName} -m "${tagName}"`, execOpts)
|
execSync(`git tag -a ${tagName} -m "${tagName}"`, execOpts)
|
||||||
execSync(`pnpm publish -C ${dir} --no-git-checks`, execOpts)
|
execSync(`pnpm publish -C ${packagePath} --no-git-checks`, execOpts)
|
||||||
results.push({ name, success: true })
|
results.push({ name: shortName, success: true })
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(chalk.bold.red(`ERROR: ${error.message}`))
|
console.error(chalk.bold.red(`ERROR: ${error.message}`))
|
||||||
results.push({ name, success: false })
|
results.push({ name: shortName, success: false })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -913,4 +913,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