payload-plugin-scheduler
Version:
Scheduled posts plugin for PayloadCMS
73 lines (70 loc) • 1.71 kB
text/typescript
import type { CollectionConfig } from 'payload/types'
import { merge } from 'ts-deepmerge'
import type { ScheduledPostConfig } from '../types'
const ScheduledPosts = (scheduleConfig: ScheduledPostConfig): CollectionConfig =>
merge(
{
slug: 'scheduled_posts',
labels: {
plural: 'Scheduled Posts',
singular: 'Scheduled Post',
},
access: {
create: () => false,
read: () => true,
},
admin: {
hidden: true,
},
fields: [
{
name: 'post',
type: 'relationship',
unique: true,
relationTo: [...(scheduleConfig.collections || [])],
hasMany: false,
admin: {
readOnly: true,
},
},
{
name: 'global',
type: 'select',
options: [...(scheduleConfig.globals || [])],
unique: true,
},
{
name: 'date',
index: true,
type: 'date',
admin: {
date: {
pickerAppearance: 'dayAndTime',
timeIntervals: scheduleConfig.interval,
},
readOnly: true,
},
},
{
name: 'status',
index: true,
type: 'select',
options: [
{
value: 'queued',
label: 'Queued',
},
{
value: 'complete',
label: 'Complete',
},
],
admin: {
readOnly: true,
},
},
].filter(Boolean),
},
scheduleConfig?.scheduledPosts || {},
) as CollectionConfig
export default ScheduledPosts