Files
payload/packages/db-postgres/src/createVersion.ts
2023-08-30 12:55:07 -04:00

73 lines
1.5 KiB
TypeScript

import type { CreateVersion } from 'payload/dist/database/types';
import { buildVersionCollectionFields } from 'payload/dist/versions/buildCollectionFields';
import toSnakeCase from 'to-snake-case';
import type { PostgresAdapter } from './types';
import { upsertRow } from './upsertRow';
export const createVersion: CreateVersion = async function createVersion(
this: PostgresAdapter,
{
collectionSlug,
parent,
versionData,
autosave,
createdAt,
updatedAt,
},
) {
const collection = this.payload.collections[collectionSlug].config;
const tableName = toSnakeCase(collectionSlug);
const result = await upsertRow({
adapter: this,
data: {
parent,
latest: true,
autosave,
createdAt,
updatedAt,
version: versionData,
},
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;
};