Files
payload/packages/db-postgres/src/deleteVersions.ts
2023-09-21 13:52:01 -04:00

46 lines
1.2 KiB
TypeScript

import type { DeleteVersions } from 'payload/database'
import type { PayloadRequest, SanitizedCollectionConfig } from 'payload/types'
import { inArray } from 'drizzle-orm'
import { buildVersionCollectionFields } from 'payload/versions'
import toSnakeCase from 'to-snake-case'
import type { PostgresAdapter } from './types'
import { findMany } from './find/findMany'
export const deleteVersions: DeleteVersions = async function deleteVersion(
this: PostgresAdapter,
{ collection, locale, req = {} as PayloadRequest, where: where },
) {
const db = this.sessions?.[req.transactionID] || this.db
const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config
const tableName = `_${toSnakeCase(collection)}_versions`
const fields = buildVersionCollectionFields(collectionConfig)
const { docs } = await findMany({
adapter: this,
fields,
limit: 0,
locale,
page: 1,
pagination: false,
req,
tableName,
where,
})
const ids = []
docs.forEach((doc) => {
ids.push(doc.id)
})
if (ids.length > 0) {
await db.delete(this.tables[tableName]).where(inArray(this.tables[tableName].id, ids))
}
return docs
}