Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
77 lines
1.8 KiB
TypeScript
77 lines
1.8 KiB
TypeScript
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,
|
|
};
|