Desenvolvedores
src_
collections
Media.ts

📂 Documentação do Arquivo Media.ts da pasta collections

O arquivo Media.ts, localizado na pasta collections, define a coleção Media, responsável por gerenciar informações sobre arquivos de mídia no sistema.

⚙️ Configuração da Coleção

import { isAdminOrCreatedBy } from '@/access/isAdminOrCreatedBy'
import type { CollectionConfig } from 'payload'
 
export const Media: CollectionConfig = {
  slug: 'media',
  access: {
    read: () => true,
    create: isAdminOrCreatedBy,
    update: isAdminOrCreatedBy,
    delete: isAdminOrCreatedBy,
  },
  fields: [
    {
      name: 'alt',
      type: 'text',
      label: 'Texto alternativo',
      required: true,
    },
  ],
  upload: true,
}

🔍 Explicação do Código

  • slug: 'media' 🏷️ → Identificador único da coleção, utilizado nas rotas da API.
  • access 🔑 → Define as regras de acesso:
    • read: Todos podem ler os dados.
    • create, update, delete: Apenas administradores ou criadores podem modificar os registros.
  • fields 📄 → Lista de campos que a coleção possui.
  • upload: true 📤 → Indica que essa coleção permite upload de arquivos.

🏗️ Estrutura dos Campos

1️⃣ Texto Alternativo 📝

  • name: alt
  • type: text
  • label: Texto alternativo
  • required: true
  • Descrição: Campo obrigatório para garantir acessibilidade e melhor descrição das mídias.

✅ Considerações Finais

A coleção Media 📸 é essencial para armazenar arquivos de mídia e suas descrições. As regras de acesso garantem segurança e controle adequado sobre as operações de CRUD. O campo alt melhora a acessibilidade e SEO do sistema.

🔗 Documentação Completa da Pasta collections

Veja aqui (opens in a new tab)


📌 Código Completo para Referência:

import { isAdminOrCreatedBy } from '@/access/isAdminOrCreatedBy'
import type { CollectionConfig } from 'payload'
 
export const Media: CollectionConfig = {
  slug: 'media',
  access: {
    read: () => true,
    create: isAdminOrCreatedBy,
    update: isAdminOrCreatedBy,
    delete: isAdminOrCreatedBy,
  },
  fields: [
    {
      name: 'alt',
      type: 'text',
      label: 'Texto alternativo',
      required: true,
    },
  ],
  upload: true,
}