collection_field_schema
Mapeamento entre coleção e os field_definitions visíveis nos itens.
Tabela de junção que define quais campos customizados aparecem em itens de uma coleção específica, em que ordem, e quais são obrigatórios.
Cada row vincula uma collection a uma field_definition. Sem registro aqui, o campo não aparece no form de novo item nem na visualização. O usuário pode reordenar arrastando na UI (atualiza display_order).
Colunas
| Coluna | Tipo | Nullable | Default |
|---|---|---|---|
| id ● | uuid | NOT NULL | gen_random_uuid() |
| collection_id | uuid | NOT NULL | — |
| field_definition_id | uuid | NOT NULL | — |
| is_required | boolean | NOT NULL | false |
| display_order | integer | NOT NULL | 0 |
● primary key ◆ unique
Funcionalidade dos campos
id— UUID, PKcollection_id— FK pracollections, cascade delete (ao apagar coleção, schema some)field_definition_id— FK prafield_definitions. Sem cascade — apagar uma definition do sistema quebra schemas que a usam (não fazemos isso; usaris_hiddenem vez).is_required— setrue, item da coleção precisa preencher esse campo no savedisplay_order— inteiro pra ordenar na UI. Default 0; ordem ascendente. Pode haver empate; tiebreaker éidna practice mas não enforced.
Foreign keys
| Coluna(s) | Referência | ON DELETE | ON UPDATE |
|---|---|---|---|
| collection_id | collections.id | cascade | no action |
| field_definition_id | field_definitions.id | no action | no action |
Índices
Esta tabela não tem índices customizados.
Não há índices secundários customizados. Lookups são por collection_id (poucos rows por coleção, ~5-15).
Constraints
PRIMARY KEY (id)
Não há unique constraint enforced em (collection_id, field_definition_id) — em teoria a app evita duplicação, mas DB não bloqueia. Pendência: adicionar uniqueIndex para evitar inconsistência.
Padrões de uso
- Adicionar campo a uma coleção — INSERT
- Reordenar — UPDATE display_order de múltiplos rows (transação)
- Marcar obrigatório — UPDATE is_required
- Remover — DELETE. Campos nos itens existentes não são removidos do JSONB
items.fields(preserva dado), só somem da UI.
Tabelas relacionadas
collections— pai (cascade)field_definitions— referênciaitems— onde os valores são guardados