Desenvolvedores
src_
collections
Colaboradores.ts

📌 Documentação do Arquivo Colaboradores.ts

O arquivo Colaboradores.ts pertence à pasta collections e define a coleção Colaboradores. Essa coleção é responsável por armazenar informações dos colaboradores que fazem parte do sistema.

🎯 Objetivo da Coleção

A coleção Colaboradores permite o gerenciamento de informações essenciais, como nome, foto, função, links de redes sociais e uma breve descrição. Também define permissões de acesso para cada colaborador.


⚙️ Configuração da Coleção

Abaixo está a definição da coleção, incluindo seu slug, rótulos e regras de acesso:

import { isAdmin } from '@/access/isAdmin'
import { isAdminOrCreatedBy } from '@/access/isAdminOrCreatedBy'
import type { CollectionConfig } from 'payload'
 
export const Colaboradores: CollectionConfig = {
  slug: 'colaboradores',
  labels: {
    singular: 'Colaborador',
    plural: 'Colaboradores',
  },
  admin: {
    useAsTitle: 'email',
  },
  access: {
    read: () => true,
    create: isAdmin,
    update: isAdminOrCreatedBy,
    delete: isAdmin,
  },
  auth: true,
  fields: [
    ...
  ],
  hooks: {},
}

🏷️ Explicação

  • slug: Define o identificador único da coleção.
  • labels: Personaliza os rótulos da coleção no painel administrativo.
  • admin.useAsTitle: Define o campo principal a ser exibido no painel (neste caso, o email do colaborador).
  • access: Controla as permissões:
    • read: Qualquer usuário pode visualizar os dados.
    • create: Somente administradores podem criar novos registros.
    • update: Apenas administradores ou o próprio criador podem editar.
    • delete: Apenas administradores podem excluir registros.
  • auth: Define se a autenticação será necessária para acessar a coleção.

🛠️ Campos da Coleção

A coleção Colaboradores possui os seguintes campos:

🏷️ 1. Role (Função do Colaborador)

{
  name: 'role',
  type: 'select',
  options: [
    { label: 'Editor', value: 'editor' },
    { label: 'Admin', value: 'admin' },
  ],
  required: true,
  defaultValue: 'editor',
}
  • Função do colaborador no sistema.
  • Pode ser Editor ou Admin.
  • O valor padrão é editor.

📛 2. Nome Completo

{
  name: 'nomeCompleto',
  type: 'text',
  required: true,
  maxLength: 100,
}
  • Campo obrigatório com limite de 100 caracteres.
  • Armazena o nome completo do colaborador.

🖼️ 3. Foto do Colaborador

{
  name: 'foto',
  type: 'upload',
  relationTo: 'media',
  required: true,
}
  • Campo obrigatório para armazenar uma foto do colaborador.
  • O arquivo deve estar relacionado à coleção media.

📝 4. Descrição Breve

{
  name: 'descricao',
  label: 'Descrição Breve',
  type: 'textarea',
  required: true,
  maxLength: 1000,
}
  • Campo obrigatório com limite de 1000 caracteres.
  • Permite incluir uma breve descrição sobre o colaborador.

📹 5. Link do YouTube

{
  name: 'youtubeLink',
  type: 'text',
  maxLength: 255,
}
  • Campo opcional para armazenar o link do canal do YouTube do colaborador.
  • Limite de 255 caracteres.

📸 6. Link do Instagram

{
  name: 'instagramLink',
  type: 'text',
  maxLength: 255,
}
  • Campo opcional para armazenar o link do Instagram do colaborador.
  • Limite de 255 caracteres.

🌍 7. Link do Site Pessoal

{
  name: 'siteLink',
  type: 'text',
  maxLength: 255,
}
  • Campo opcional para armazenar o link do site pessoal do colaborador.
  • Limite de 255 caracteres.

🏷️ 8. Tags (Relacionamento com Outras Coleções)

{
  name: 'tags',
  label: 'Tags',
  type: 'relationship',
  relationTo: 'tags',
  hasMany: true,
}
  • Permite associar múltiplas tags ao colaborador.
  • Relaciona-se à coleção tags.

📌 Código Completo

Aqui está o código completo do arquivo Colaboradores.ts:

import { isAdmin } from '@/access/isAdmin'
import { isAdminOrCreatedBy } from '@/access/isAdminOrCreatedBy'
import type { CollectionConfig } from 'payload'
 
export const Colaboradores: CollectionConfig = {
  slug: 'colaboradores',
  labels: {
    singular: 'Colaborador',
    plural: 'Colaboradores',
  },
  admin: {
    useAsTitle: 'email',
  },
  access: {
    read: () => true,
    create: isAdmin,
    update: isAdminOrCreatedBy,
    delete: isAdmin,
  },
  auth: true,
  fields: [
    {
      name: 'role',
      type: 'select',
      options: [
        { label: 'Editor', value: 'editor' },
        { label: 'Admin', value: 'admin' },
      ],
      required: true,
      defaultValue: 'editor',
    },
    {
      name: 'nomeCompleto',
      type: 'text',
      required: true,
      maxLength: 100,
    },
    {
      name: 'foto',
      type: 'upload',
      relationTo: 'media',
      required: true,
    },
    {
      name: 'descricao',
      label: 'Descrição Breve',
      type: 'textarea',
      required: true,
      maxLength: 1000,
    },
    {
      name: 'youtubeLink',
      type: 'text',
      maxLength: 255,
    },
    {
      name: 'instagramLink',
      type: 'text',
      maxLength: 255,
    },
    {
      name: 'siteLink',
      type: 'text',
      maxLength: 255,
    },
    {
      name: 'tags',
      label: 'Tags',
      type: 'relationship',
      relationTo: 'tags',
      hasMany: true,
    },
  ],
  hooks: {},
}

🔥 Considerações Finais

A coleção Colaboradores foi projetada para armazenar informações essenciais dos colaboradores do sistema, garantindo que cada um tenha uma função específica e possa compartilhar links relevantes. O sistema de permissões assegura que apenas usuários autorizados possam modificar os dados. 🚀