Files
payload/src/versions/getLatestCollectionVersion.ts
2022-12-02 12:36:19 -05:00

43 lines
956 B
TypeScript

import { Document } from '../types';
import { Payload } from '..';
import { Collection, TypeWithID } from '../collections/config/types';
type Args = {
payload: Payload
collection: Collection,
query: Record<string, unknown>
id: string | number
lean?: boolean
}
export const getLatestCollectionVersion = async <T extends TypeWithID = any>({
payload,
collection: {
config,
Model,
},
query,
id,
lean = true,
}: Args): Promise<T> => {
let version;
if (config.versions?.drafts) {
version = payload.versions[config.slug].findOne({
parent: id,
}, {}, {
sort: { updatedAt: 'desc' },
lean,
});
}
const collection = await Model.findOne(query, {}, { lean }) as Document;
version = await version;
if (!version || version.updatedAt < collection.updatedAt) {
return collection;
}
return {
...version.version,
updatedAt: version.updatedAt,
createdAt: version.createdAt,
};
};