import { CollectionConfig } from 'payload'; export const BibleVerses: CollectionConfig = { slug: 'bible-verses', admin: { useAsTitle: 'reference', defaultColumns: ['reference', 'version', 'book', 'chapter'], group: 'Bible Content', pagination: { defaultLimit: 50, }, }, fields: [ { name: 'book', type: 'relationship', relationTo: 'bible-books', required: true, index: true, }, { name: 'chapter', type: 'number', required: true, min: 1, index: true, }, { name: 'verse', type: 'number', required: true, min: 1, index: true, }, { name: 'text', type: 'textarea', required: true, localized: true, }, { name: 'version', type: 'select', options: [ { label: 'Cornilescu (VDC)', value: 'VDC' }, { label: 'NASB', value: 'NASB' }, { label: 'RVR', value: 'RVR' }, { label: 'NR', value: 'NR' }, ], required: true, index: true, }, { name: 'reference', type: 'text', admin: { readOnly: true, }, hooks: { beforeChange: [ async ({ data, siblingData, req }) => { if (!data) return ''; if (siblingData?.book && data.chapter && data.verse) { const book = await req.payload.findByID({ collection: 'bible-books', id: siblingData.book, }); if (book) { return `${book.name} ${data.chapter}:${data.verse}`; } } return data.reference || ''; }, ], }, }, { name: 'embedding', type: 'json', admin: { hidden: true, description: 'Vector embedding for semantic search', }, }, ], access: { read: () => true, create: ({ req }) => req.user?.role === 'admin' || req.user?.role === 'super-admin', update: ({ req }) => req.user?.role === 'admin' || req.user?.role === 'super-admin', delete: ({ req }) => req.user?.role === 'super-admin', }, };