import type { CollectionConfig } from "payload"; import { hasPermission } from "@/utils/access-control/hasPermission"; export const Releases: CollectionConfig = { slug: "releases", admin: { group: "Projects", useAsTitle: "name", defaultColumns: ["name", "project", "targetVersion", "status", "releaseDate"], }, access: { read: ({ req }) => !!req.user, create: async ({ req }) => { if (!req.user) return false; return await hasPermission(req.payload, req.user, "releases:create"); }, update: async ({ req }) => { if (!req.user) return false; return await hasPermission(req.payload, req.user, "releases:update"); }, delete: async ({ req }) => { if (!req.user) return false; return await hasPermission(req.payload, req.user, "releases:delete"); }, }, fields: [ { name: "name", type: "text", required: true, }, { name: "project", type: "relationship", relationTo: "projects", required: true, index: true, }, { name: "description", type: "richText", }, { name: "status", type: "select", defaultValue: "draft", options: [ { label: "Draft", value: "draft" }, { label: "In Progress", value: "in_progress" }, { label: "Released", value: "released" }, ], }, { name: "releaseDate", type: "date", admin: { date: { pickerAppearance: "dayAndTime" }, }, }, { name: "targetVersion", type: "text", admin: { description: "Semver string, e.g. 2.3.0", }, }, ], };