diff --git a/packages/drizzle/src/createVersion.ts b/packages/drizzle/src/createVersion.ts index 06389cfc74..4d608808f3 100644 --- a/packages/drizzle/src/createVersion.ts +++ b/packages/drizzle/src/createVersion.ts @@ -29,14 +29,20 @@ export async function createVersion( delete version.id } + const data: Record = { + autosave, + latest: true, + parent, + version, + } + + if ('createdAt' in version) { + data.createdAt = version.createdAt + } + const result = await upsertRow>({ adapter: this, - data: { - autosave, - latest: true, - parent, - version, - }, + data, db, fields: buildVersionCollectionFields(collection), operation: 'create', diff --git a/test/versions/int.spec.ts b/test/versions/int.spec.ts index ccb11c797f..8ec8b929b9 100644 --- a/test/versions/int.spec.ts +++ b/test/versions/int.spec.ts @@ -2,6 +2,7 @@ import type { Payload } from 'payload' import path from 'path' import { ValidationError } from 'payload' +import { wait } from 'payload/shared' import { fileURLToPath } from 'url' import type { NextRESTClient } from '../helpers/NextRESTClient.js' @@ -299,6 +300,23 @@ describe('Versions', () => { draftsDescending.docs[draftsDescending.docs.length - 1], ) }) + + it('should have the same createdAt on new version create', async () => { + const doc = await payload.create({ + collection: autosaveCollectionSlug, + data: { description: 'descr', title: 'title' }, + }) + + await wait(30) + + const updated = await payload.update({ + collection: autosaveCollectionSlug, + id: doc.id, + data: {}, + }) + + expect(doc.createdAt).toBe(updated.createdAt) + }) }) describe('Restore', () => {