From c3a39429697e9d335e9be199e7caafb82eb26219 Mon Sep 17 00:00:00 2001 From: Elliot DeNolf Date: Tue, 6 Feb 2024 11:16:27 -0500 Subject: [PATCH] fix(db-postgres): filtering relationships with drafts enabled (#4998) * fix(db-postgres): filtering relationships with drafts enabled * test: draft relationship filtering --- .../src/queries/getTableColumnFromPath.ts | 4 +- test/versions/collections/Drafts.ts | 5 +++ test/versions/int.spec.ts | 38 ++++++++++++++++++- 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/packages/db-postgres/src/queries/getTableColumnFromPath.ts b/packages/db-postgres/src/queries/getTableColumnFromPath.ts index 6ff91c5ad4..ea578cf0a5 100644 --- a/packages/db-postgres/src/queries/getTableColumnFromPath.ts +++ b/packages/db-postgres/src/queries/getTableColumnFromPath.ts @@ -134,7 +134,7 @@ export const getTableColumnFromPath = ({ aliasTable, collectionPath, columnPrefix: `${columnPrefix}${field.name}_`, - constraintPath, + constraintPath: `${constraintPath}${field.name}.`, constraints, fields: field.fields, joinAliases, @@ -185,7 +185,7 @@ export const getTableColumnFromPath = ({ aliasTable, collectionPath, columnPrefix: `${columnPrefix}${field.name}_`, - constraintPath, + constraintPath: `${constraintPath}${field.name}.`, constraints, fields: field.fields, joinAliases, diff --git a/test/versions/collections/Drafts.ts b/test/versions/collections/Drafts.ts index 6abe446b18..fc4899c75f 100644 --- a/test/versions/collections/Drafts.ts +++ b/test/versions/collections/Drafts.ts @@ -110,6 +110,11 @@ const DraftPosts: CollectionConfig = { }, ], }, + { + name: 'relation', + type: 'relationship', + relationTo: draftCollectionSlug, + }, ], versions: { drafts: true, diff --git a/test/versions/int.spec.ts b/test/versions/int.spec.ts index 1b956bd6b2..c02dc3d06b 100644 --- a/test/versions/int.spec.ts +++ b/test/versions/int.spec.ts @@ -226,6 +226,40 @@ describe('Versions', () => { ) }) + // https://github.com/payloadcms/payload/issues/4827 + it('should query drafts with relation', async () => { + const draftPost = await payload.create({ + collection: draftCollectionSlug, + data: { + title: 'Some Title', + description: 'Description', + }, + }) + + await payload.create({ + collection: draftCollectionSlug, + data: { + title: 'With Relation', + description: 'Description', + relation: draftPost.id, + }, + }) + + const query = { + collection: draftCollectionSlug, + where: { + relation: { + equals: draftPost.id, + }, + }, + } + const all = await payload.find(query) + const drafts = await payload.find({ ...query, draft: true }) + + expect(all.docs).toHaveLength(1) + expect(drafts.docs).toHaveLength(1) + }) + it('should `findVersions` with sort', async () => { const draftsAscending = await payload.findVersions({ collection: draftCollectionSlug, @@ -289,7 +323,7 @@ describe('Versions', () => { draft: true, }) - // @ts-ignore + // @ts-expect-error let updatedPost = await payload.update({ id: versionedPost.id, collection: draftCollectionSlug, @@ -305,7 +339,7 @@ describe('Versions', () => { }, draft: true, }) - // @ts-ignore + // @ts-expect-error updatedPost = await payload.update({ id: versionedPost.id, collection: draftCollectionSlug,