Files
payload/src/globals/initLocal.ts
2023-01-17 15:44:11 -05:00

42 lines
1.3 KiB
TypeScript

import mongoose from 'mongoose';
import paginate from 'mongoose-paginate-v2';
import buildQueryPlugin from '../mongoose/buildQuery';
import buildModel from './buildModel';
import { Payload } from '../payload';
import { getVersionsModelName } from '../versions/getVersionsModelName';
import { buildVersionGlobalFields } from '../versions/buildGlobalFields';
import buildSchema from '../mongoose/buildSchema';
import { CollectionModel } from '../collections/config/types';
export default function initGlobalsLocal(ctx: Payload): void {
if (ctx.config.globals) {
ctx.globals = {
Model: buildModel(ctx.config),
config: ctx.config.globals,
};
ctx.config.globals.forEach((global) => {
if (global.versions) {
const versionModelName = getVersionsModelName(global);
const versionSchema = buildSchema(
ctx.config,
buildVersionGlobalFields(global),
{
disableUnique: true,
draftsEnabled: true,
options: {
timestamps: false,
},
},
);
versionSchema.plugin(paginate, { useEstimatedCount: true })
.plugin(buildQueryPlugin);
ctx.versions[global.slug] = mongoose.model(versionModelName, versionSchema) as CollectionModel;
}
});
}
}