diff --git a/src/collections/HonoraryMembers.ts b/src/collections/HonoraryMembers.ts new file mode 100644 index 0000000..41b60d6 --- /dev/null +++ b/src/collections/HonoraryMembers.ts @@ -0,0 +1,49 @@ +import { isExec } from '@/access/isExec'; +import type { CollectionConfig } from 'payload'; + +export const HonoraryMembers: CollectionConfig = { + slug: 'honorary-members', + admin: { + useAsTitle: 'name', + }, + fields: [ + { + name: 'name', + type: 'text', + required: true, + }, + { + name: 'yearAwarded', + type: 'number', + required: true, + }, + { + name: 'positions', + type: 'array', + required: false, + fields: [ + { + name: 'position', + type: 'text', + required: true, + }, + { + name: 'year', + type: 'number', + required: true, + }, + ], + minRows: 0, + maxRows: 20, + }, + ], + access: { + create: isExec, + update: isExec, + delete: isExec, + read: () => true, + }, + versions: { + drafts: true, + }, +}; diff --git a/src/payload-types.ts b/src/payload-types.ts index 7b061a1..26dde6e 100644 --- a/src/payload-types.ts +++ b/src/payload-types.ts @@ -74,6 +74,7 @@ export interface Config { projects: Project; gallery: Gallery; 'committee-members': CommitteeMember; + 'honorary-members': HonoraryMember; 'known-spam-messages': KnownSpamMessage; 'payload-locked-documents': PayloadLockedDocument; 'payload-preferences': PayloadPreference; @@ -89,6 +90,7 @@ export interface Config { projects: ProjectsSelect | ProjectsSelect; gallery: GallerySelect | GallerySelect; 'committee-members': CommitteeMembersSelect | CommitteeMembersSelect; + 'honorary-members': HonoraryMembersSelect | HonoraryMembersSelect; 'known-spam-messages': KnownSpamMessagesSelect | KnownSpamMessagesSelect; 'payload-locked-documents': | PayloadLockedDocumentsSelect @@ -135,10 +137,6 @@ export interface UserAuthOperations { /** This interface was referenced by `Config`'s JSON-Schema via the `definition` "users". */ export interface User { id: string; - email: string; - emailVerified?: string | null; - name?: string | null; - image?: string | null; /** Users can have one or many roles */ roles?: | ( @@ -152,16 +150,23 @@ export interface User { | 'exec' )[] | null; - accounts?: + updatedAt: string; + createdAt: string; + email: string; + resetPasswordToken?: string | null; + resetPasswordExpiration?: string | null; + salt?: string | null; + hash?: string | null; + loginAttempts?: number | null; + lockUntil?: string | null; + sessions?: | { - id?: string | null; - provider: string; - providerAccountId: string; - type: string; + id: string; + createdAt?: string | null; + expiresAt: string; }[] | null; - updatedAt: string; - createdAt: string; + password?: string | null; } /** This interface was referenced by `Config`'s JSON-Schema via the `definition` "media". */ export interface Media { @@ -292,6 +297,22 @@ export interface CommitteeMember { createdAt: string; _status?: ('draft' | 'published') | null; } +/** This interface was referenced by `Config`'s JSON-Schema via the `definition` "honorary-members". */ +export interface HonoraryMember { + id: string; + name: string; + yearAwarded: number; + positions?: + | { + position: string; + year: number; + id?: string | null; + }[] + | null; + updatedAt: string; + createdAt: string; + _status?: ('draft' | 'published') | null; +} /** * Please upload messages that are known to be spam so they can be automatically filtered out on * Discord using DuckBot. @@ -345,6 +366,10 @@ export interface PayloadLockedDocument { relationTo: 'committee-members'; value: string | CommitteeMember; } | null) + | ({ + relationTo: 'honorary-members'; + value: string | HonoraryMember; + } | null) | ({ relationTo: 'known-spam-messages'; value: string | KnownSpamMessage; @@ -393,22 +418,23 @@ export interface PayloadMigration { } /** This interface was referenced by `Config`'s JSON-Schema via the `definition` "users_select". */ export interface UsersSelect { - id?: T; - email?: T; - emailVerified?: T; - name?: T; - image?: T; roles?: T; - accounts?: + updatedAt?: T; + createdAt?: T; + email?: T; + resetPasswordToken?: T; + resetPasswordExpiration?: T; + salt?: T; + hash?: T; + loginAttempts?: T; + lockUntil?: T; + sessions?: | T | { id?: T; - provider?: T; - providerAccountId?: T; - type?: T; + createdAt?: T; + expiresAt?: T; }; - updatedAt?: T; - createdAt?: T; } /** This interface was referenced by `Config`'s JSON-Schema via the `definition` "media_select". */ export interface MediaSelect { @@ -502,6 +528,24 @@ export interface CommitteeMembersSelect { createdAt?: T; _status?: T; } +/** + * This interface was referenced by `Config`'s JSON-Schema via the `definition` + * "honorary-members_select". + */ +export interface HonoraryMembersSelect { + name?: T; + yearAwarded?: T; + positions?: + | T + | { + position?: T; + year?: T; + id?: T; + }; + updatedAt?: T; + createdAt?: T; + _status?: T; +} /** * This interface was referenced by `Config`'s JSON-Schema via the `definition` * "known-spam-messages_select". diff --git a/src/payload.config.ts b/src/payload.config.ts index d6b9b5b..4c03193 100644 --- a/src/payload.config.ts +++ b/src/payload.config.ts @@ -11,6 +11,7 @@ import { authConfig } from './auth.config'; import { CommitteeMembers } from './collections/CommitteeMembers'; import { Events } from './collections/Events'; import { Gallery } from './collections/Gallery'; +import { HonoraryMembers } from './collections/HonoraryMembers'; import { KnownSpamMessages } from './collections/KnownSpamMessages'; import { Media } from './collections/Media'; import { Projects } from './collections/Projects'; @@ -96,6 +97,7 @@ export default buildConfig({ Projects, Gallery, CommitteeMembers, + HonoraryMembers, KnownSpamMessages, ], // Include any new collections here editor: lexicalEditor(),