UNPKG

payload

Version:

Node, React, Headless CMS and Application Framework built on Next.js

86 lines (85 loc) 2.56 kB
// @ts-strict-ignore import { deleteHandler } from './requestHandlers/delete.js'; import { findByIDHandler } from './requestHandlers/findOne.js'; import { updateHandler } from './requestHandlers/update.js'; const preferenceAccess = ({ req })=>{ if (!req.user) { return false; } return { 'user.value': { equals: req?.user?.id } }; }; export const preferencesCollectionSlug = 'payload-preferences'; export const getPreferencesCollection = (config)=>({ slug: preferencesCollectionSlug, access: { delete: preferenceAccess, read: preferenceAccess }, admin: { hidden: true }, endpoints: [ { handler: findByIDHandler, method: 'get', path: '/:key' }, { handler: deleteHandler, method: 'delete', path: '/:key' }, { handler: updateHandler, method: 'post', path: '/:key' } ], fields: [ { name: 'user', type: 'relationship', hooks: { beforeValidate: [ ({ req })=>{ if (!req?.user) { return null; } return { relationTo: req?.user.collection, value: req?.user.id }; } ] }, index: true, relationTo: config.collections.filter((collectionConfig)=>collectionConfig.auth).map((collectionConfig)=>collectionConfig.slug), required: true }, { name: 'key', type: 'text', index: true }, { name: 'value', type: 'json', validate: (value)=>{ if (value) { try { JSON.parse(JSON.stringify(value)); } catch { return 'Invalid JSON'; } } return true; } } ], lockDocuments: false }); //# sourceMappingURL=config.js.map