1
0
Fork 0
polaris-task-force/src/collections/projects/Releases.ts

68 lines
1.6 KiB
TypeScript

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",
},
},
],
};