Files
payload/packages/db-postgres/src/createVersion.ts
2023-09-21 16:51:40 -04:00

70 lines
1.6 KiB
TypeScript

import type { CreateVersion } from 'payload/database'
import type { PayloadRequest } from 'payload/dist/express/types'
import { buildVersionCollectionFields } from 'payload/versions'
import toSnakeCase from 'to-snake-case'
import type { PostgresAdapter } from './types'
import { upsertRow } from './upsertRow'
export const createVersion: CreateVersion = async function createVersion(
this: PostgresAdapter,
{ autosave, collectionSlug, createdAt, parent, req = {} as PayloadRequest, updatedAt, versionData },
) {
const db = this.sessions?.[req.transactionID] || this.db
const collection = this.payload.collections[collectionSlug].config
const tableName = toSnakeCase(collectionSlug)
const result = await upsertRow({
adapter: this,
data: {
autosave,
latest: true,
parent,
version: versionData,
},
db,
fields: buildVersionCollectionFields(collection),
operation: 'create',
tableName: `_${tableName}_versions`,
})
// const [doc] = await VersionModel.create(
// [
// {
// parent,
// version: versionData,
// latest: true,
// autosave,
// createdAt,
// updatedAt,
// },
// ],
// options,
// req,
// );
// await VersionModel.updateMany({
// $and: [
// {
// _id: {
// $ne: doc._id,
// },
// },
// {
// parent: {
// $eq: parent,
// },
// },
// {
// latest: {
// $eq: true,
// },
// },
// ],
// }, { $unset: { latest: 1 } });
return result
}