import { CollectionConfig } from "payload"; import { isDeveloper } from "@/utils/access-control/isRole"; import { LOADOUT_SLOTS } from "@/lib/locker"; export const Loadouts: CollectionConfig = { slug: "loadouts", admin: { group: "Locker", useAsTitle: "name", defaultColumns: ["name", "ownerUser", "updatedAt"], }, access: { read: ({ req }) => { if (!req.user) return false; if (isDeveloper({ req })) return true; return { ownerUser: { equals: req.user.id } }; }, create: ({ req }) => !!req.user, update: ({ req }) => { if (!req.user) return false; if (isDeveloper({ req })) return true; return { ownerUser: { equals: req.user.id } }; }, delete: ({ req }) => { if (!req.user) return false; if (isDeveloper({ req })) return true; return { ownerUser: { equals: req.user.id } }; }, }, fields: [ { name: "name", type: "text", required: true, admin: { description: 'Loadout name (e.g., "CQB", "Overwatch", "Resupply").', }, }, { name: "description", type: "textarea", admin: { description: "Optional notes about this loadout.", }, }, { name: "ownerUser", type: "relationship", relationTo: "users", required: true, admin: { description: "The operator this loadout belongs to.", }, }, { name: "slots", type: "group", label: "Equipment Slots", admin: { description: "Assign assets from your locker to each equipment slot.", }, fields: LOADOUT_SLOTS.map((slot) => ({ name: slot.name, type: "relationship", relationTo: "assets", admin: { description: slot.description, }, filterOptions: { assetType: { in: slot.assetTypes.join(","), }, }, })), }, ], };