46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import { text } from "payload/dist/fields/validations";
|
|
import { mustBeAdmin } from "../../accesses/collections/mustBeAdmin";
|
|
import { shownOnlyToAdmin } from "../../accesses/collections/shownOnlyToAdmin";
|
|
import { CollectionGroups, Collections } from "../../constants";
|
|
import { buildCollectionConfig } from "../../utils/collectionConfig";
|
|
import { getAllEndpoint } from "./endpoints/getAllEndpoint";
|
|
import { importFromStrapi } from "./endpoints/importFromStrapi";
|
|
|
|
const fields = {
|
|
id: "id",
|
|
} as const satisfies Record<string, string>;
|
|
|
|
export const Currencies = buildCollectionConfig({
|
|
slug: Collections.Currencies,
|
|
labels: {
|
|
singular: "Currency",
|
|
plural: "Currencies",
|
|
},
|
|
defaultSort: fields.id,
|
|
admin: {
|
|
pagination: { defaultLimit: 100 },
|
|
useAsTitle: fields.id,
|
|
defaultColumns: [fields.id],
|
|
disableDuplicate: true,
|
|
group: CollectionGroups.Meta,
|
|
hidden: shownOnlyToAdmin,
|
|
},
|
|
access: { create: mustBeAdmin, update: mustBeAdmin, delete: mustBeAdmin },
|
|
endpoints: [importFromStrapi, getAllEndpoint],
|
|
timestamps: false,
|
|
fields: [
|
|
{
|
|
name: fields.id,
|
|
type: "text",
|
|
unique: true,
|
|
required: true,
|
|
validate: (value, options) => {
|
|
if (!/^[A-Z]{3}$/g.test(value)) {
|
|
return "The code must be a valid ISO 4217 currency code (e.g: EUR, CAD...)";
|
|
}
|
|
return text(value, options);
|
|
},
|
|
},
|
|
],
|
|
});
|