diff --git a/packages/db-postgres/src/schema/build.ts b/packages/db-postgres/src/schema/build.ts index 8d850a8638..3194ab6e54 100644 --- a/packages/db-postgres/src/schema/build.ts +++ b/packages/db-postgres/src/schema/build.ts @@ -30,6 +30,7 @@ type Args = { disableUnique: boolean fields: Field[] rootRelationsToBuild?: Map + rootRelationships?: Set rootTableIDColType?: string rootTableName?: string tableName: string @@ -48,6 +49,7 @@ export const buildTable = ({ disableUnique = false, fields, rootRelationsToBuild, + rootRelationships, rootTableIDColType, rootTableName, tableName, @@ -66,9 +68,12 @@ export const buildTable = ({ let localesTable: GenericTable let numbersTable: GenericTable - const relationships: Set = new Set() + // Relationships to the base collection + const relationships: Set = rootRelationships || new Set() + let relationshipsTable: GenericTable + // Drizzle relations const relationsToBuild: Map = new Map() const idField = fields.find((field) => fieldAffectsData(field) && field.name === 'id') diff --git a/packages/db-postgres/src/schema/traverseFields.ts b/packages/db-postgres/src/schema/traverseFields.ts index 132af4883a..f9375d05d3 100644 --- a/packages/db-postgres/src/schema/traverseFields.ts +++ b/packages/db-postgres/src/schema/traverseFields.ts @@ -277,6 +277,7 @@ export const traverseFields = ({ disableUnique, fields: field.fields, rootRelationsToBuild, + rootRelationships: relationships, rootTableIDColType, rootTableName, tableName: arrayTableName, @@ -341,6 +342,7 @@ export const traverseFields = ({ disableUnique, fields: block.fields, rootRelationsToBuild, + rootRelationships: relationships, rootTableIDColType, rootTableName, tableName: blockTableName, diff --git a/packages/payload/src/fields/validations.ts b/packages/payload/src/fields/validations.ts index 5f49a667a7..e994b27b86 100644 --- a/packages/payload/src/fields/validations.ts +++ b/packages/payload/src/fields/validations.ts @@ -260,17 +260,21 @@ const validateFilterOptions: Validate = async ( } }) - const result = await payload.find({ - collection, - depth: 0, - limit: 0, - pagination: false, - where: { - and: [{ id: { in: valueIDs } }, optionFilter], - }, - }) + if (valueIDs.length > 0) { + const result = await payload.find({ + collection, + depth: 0, + limit: 0, + pagination: false, + where: { + and: [{ id: { in: valueIDs } }, optionFilter], + }, + }) - options[collection] = result.docs.map((doc) => doc.id) + options[collection] = result.docs.map((doc) => doc.id) + } else { + options[collection] = [] + } }), ) diff --git a/test/live-preview/config.ts b/test/live-preview/config.ts index af3b25280c..a83b8e73c2 100644 --- a/test/live-preview/config.ts +++ b/test/live-preview/config.ts @@ -72,41 +72,55 @@ export default buildConfigWithDefaults({ }, }) + const mediaID = payload.db.defaultIDType === 'number' ? media.id : `"${media.id}"` + const [post1Doc, post2Doc, post3Doc] = await Promise.all([ await payload.create({ collection: postsSlug, - data: JSON.parse(JSON.stringify(post1).replace(/\{\{IMAGE\}\}/g, media.id)), + data: JSON.parse(JSON.stringify(post1).replace(/"\{\{IMAGE\}\}"/g, mediaID)), }), await payload.create({ collection: postsSlug, - data: JSON.parse(JSON.stringify(post2).replace(/\{\{IMAGE\}\}/g, media.id)), + data: JSON.parse(JSON.stringify(post2).replace(/"\{\{IMAGE\}\}"/g, mediaID)), }), await payload.create({ collection: postsSlug, - data: JSON.parse(JSON.stringify(post3).replace(/\{\{IMAGE\}\}/g, media.id)), + data: JSON.parse(JSON.stringify(post3).replace(/"\{\{IMAGE\}\}"/g, mediaID)), }), ]) const postsPageDoc = await payload.create({ collection: pagesSlug, - data: JSON.parse(JSON.stringify(postsPage).replace(/\{\{IMAGE\}\}/g, media.id)), + data: JSON.parse(JSON.stringify(postsPage).replace(/"\{\{IMAGE\}\}"/g, mediaID)), }) + let postsPageDocID = postsPageDoc.id + let post1DocID = post1Doc.id + let post2DocID = post2Doc.id + let post3DocID = post3Doc.id + + if (payload.db.defaultIDType !== 'number') { + postsPageDocID = `"${postsPageDoc.id}"` + post1DocID = `"${post1Doc.id}"` + post2DocID = `"${post2Doc.id}"` + post3DocID = `"${post3Doc.id}"` + } + await payload.create({ collection: pagesSlug, data: JSON.parse( JSON.stringify(home) - .replace(/\{\{MEDIA_ID\}\}/g, media.id) - .replace(/\{\{POSTS_PAGE_ID\}\}/g, postsPageDoc.id) - .replace(/\{\{POST_1_ID\}\}/g, post1Doc.id) - .replace(/\{\{POST_2_ID\}\}/g, post2Doc.id) - .replace(/\{\{POST_3_ID\}\}/g, post3Doc.id), + .replace(/"\{\{MEDIA_ID\}\}"/g, mediaID) + .replace(/"\{\{POSTS_PAGE_ID\}\}"/g, postsPageDocID) + .replace(/"\{\{POST_1_ID\}\}"/g, post1DocID) + .replace(/"\{\{POST_2_ID\}\}"/g, post2DocID) + .replace(/"\{\{POST_3_ID\}\}"/g, post3DocID), ), }) await payload.updateGlobal({ slug: 'header', - data: JSON.parse(JSON.stringify(header).replace(/\{\{POSTS_PAGE_ID\}\}/g, postsPageDoc.id)), + data: JSON.parse(JSON.stringify(header).replace(/"\{\{POSTS_PAGE_ID\}\}"/g, postsPageDocID)), }) await payload.updateGlobal({ diff --git a/test/live-preview/seed/home.ts b/test/live-preview/seed/home.ts index bb93b979fa..0ec4f6144a 100644 --- a/test/live-preview/seed/home.ts +++ b/test/live-preview/seed/home.ts @@ -4,8 +4,6 @@ export const home: Page = { slug: 'home', title: 'Home', id: '', - updatedAt: '', - createdAt: '', meta: { description: 'This is an example of live preview on a page.', }, diff --git a/test/live-preview/seed/post-1.ts b/test/live-preview/seed/post-1.ts index 27eca6c527..78f8d0b23a 100644 --- a/test/live-preview/seed/post-1.ts +++ b/test/live-preview/seed/post-1.ts @@ -37,10 +37,7 @@ export const post1: Partial = { }, ], link: { - reference: { - relationTo: 'pages', - value: '', - }, + type: 'custom', url: '', label: '', }, diff --git a/test/live-preview/seed/post-2.ts b/test/live-preview/seed/post-2.ts index d1e43c452e..67901ca959 100644 --- a/test/live-preview/seed/post-2.ts +++ b/test/live-preview/seed/post-2.ts @@ -38,10 +38,7 @@ export const post2: Partial = { }, ], link: { - reference: { - relationTo: 'pages', - value: '', - }, + type: 'custom', url: '', label: '', }, diff --git a/test/live-preview/seed/post-3.ts b/test/live-preview/seed/post-3.ts index 3349c1eaa8..f7804de4cd 100644 --- a/test/live-preview/seed/post-3.ts +++ b/test/live-preview/seed/post-3.ts @@ -38,10 +38,7 @@ export const post3: Partial = { }, ], link: { - reference: { - relationTo: 'pages', - value: '', - }, + type: 'custom', url: '', label: '', },