42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { CollectionConfig } from "payload/types";
|
|
import { backPropagationField } from "../../fields/backPropagationField/backPropagationField";
|
|
import { rowField } from "../../fields/rowField/rowField";
|
|
import { buildCollectionConfig } from "../../utils/collectionConfig";
|
|
import { Collections, CollectionGroups } from "../../shared/payload/constants";
|
|
|
|
const fields = {
|
|
url: "url",
|
|
title: "title",
|
|
subscribers: "subscribers",
|
|
videos: "videos",
|
|
} as const satisfies Record<string, string>;
|
|
|
|
export const VideosChannels: CollectionConfig = buildCollectionConfig({
|
|
slug: Collections.VideosChannels,
|
|
labels: {
|
|
singular: "Videos Channel",
|
|
plural: "Videos Channels",
|
|
},
|
|
defaultSort: fields.title,
|
|
admin: {
|
|
useAsTitle: fields.title,
|
|
defaultColumns: [fields.url, fields.title, fields.subscribers, fields.videos],
|
|
group: CollectionGroups.Media,
|
|
disableDuplicate: true,
|
|
},
|
|
timestamps: false,
|
|
fields: [
|
|
{ name: fields.url, type: "text", required: true, unique: true },
|
|
rowField([
|
|
{ name: fields.title, type: "text", required: true },
|
|
{ name: fields.subscribers, type: "number", required: true },
|
|
]),
|
|
backPropagationField({
|
|
name: fields.videos,
|
|
relationTo: Collections.Videos,
|
|
hasMany: true,
|
|
where: ({ id }) => ({ "platform.channel": { equals: id } }),
|
|
}),
|
|
],
|
|
});
|