import { CollectionConfig } from "payload"; import { requirePermission, hasPermission } from "@/utils/access-control/hasPermission"; export const CustomRadioTests: CollectionConfig = { slug: "custom-radio-tests", admin: { group: "Minigames", useAsTitle: "name", defaultColumns: ["name", "author", "messageCount", "order", "published", "playCount"], listSearchableFields: ["name"], }, access: { read: ({ req }) => !!req.user, create: ({ req }) => !!req.user, update: async ({ req }) => { if (!req.user) return false; if (await hasPermission(req.payload, req.user, "custom-radio-tests:update")) return true; return { author: { equals: req.user.id } }; }, delete: requirePermission("custom-radio-tests:delete"), }, fields: [ { name: "name", type: "text", required: true, maxLength: 100, }, { name: "author", type: "relationship", relationTo: "users", required: true, admin: { description: "Player who authored this radio test.", }, }, { name: "messages", type: "json", required: true, admin: { description: "Array of message strings used as the typing pool.", }, }, { name: "messageCount", type: "number", required: true, min: 1, max: 100, }, { name: "order", type: "select", defaultValue: "fixed", options: [ { label: "Fixed Order", value: "fixed" }, { label: "Shuffled", value: "shuffled" }, ], }, { name: "published", type: "checkbox", defaultValue: true, }, { name: "playCount", type: "number", defaultValue: 0, admin: { readOnly: true, }, }, ], timestamps: true, };