Files
payload/packages/db-postgres/src/queryDrafts.ts
2024-04-25 13:05:49 -04:00

51 lines
1.3 KiB
TypeScript

import type { PayloadRequest, SanitizedCollectionConfig } from 'payload/types'
import { type QueryDrafts, combineQueries } from 'payload/database'
import { buildVersionCollectionFields } from 'payload/versions'
import toSnakeCase from 'to-snake-case'
import type { PostgresAdapter } from './types'
import { findMany } from './find/findMany'
export const queryDrafts: QueryDrafts = async function queryDrafts(
this: PostgresAdapter,
{ collection, limit, locale, page = 1, pagination, req = {} as PayloadRequest, sort, where },
) {
const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config
const tableName = this.tableNameMap.get(
`_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`,
)
const fields = buildVersionCollectionFields(collectionConfig)
const combinedWhere = combineQueries({ latest: { equals: true } }, where)
const result = await findMany({
adapter: this,
fields,
limit,
locale,
page,
pagination,
req,
sort,
tableName,
where: combinedWhere,
})
return {
...result,
docs: result.docs.map((doc) => {
// eslint-disable-next-line no-param-reassign
doc = {
id: doc.parent,
...doc.version,
createdAt: doc.createdAt,
updatedAt: doc.updatedAt,
}
return doc
}),
}
}