Módulos
Field Definitions
Catálogo de campos customizados para itens (sistema + custom do usuário).
Visão geral
Field definitions são as definições de atributos que itens podem ter. Existem dois tipos:
- Sistema (
is_system=true, semuser_id) — vem com seeds, compartilhado entre todos os usuários - Custom do usuário (
is_system=false, comuser_id) — criadas pelo próprio user pra estender
Cada definition tem type (text, number, date, boolean, select, money) que controla a UI de input e o formato persistido em items.fields.
Entidades principais
| Tabela | Papel |
|---|---|
field_definitions | Catálogo |
collection_field_schema | Onde são referenciadas |
Endpoints
3 endpoints simples:
| Endpoint | Auth | Resumo |
|---|---|---|
GET /field-definitions | JWT | Lista (sistema + custom) |
POST /field-definitions | JWT | Criar custom |
DELETE /field-definitions/:id | JWT | Remover custom (system NÃO pode) |
Fluxos
Criar campo customizado
Tipos especiais: select e money
Select: o frontend renderiza dropdown com as selectOptions. Validação no save: valor enviado precisa estar nas options.
Money: o frontend renderiza input numérico + label da moeda (selectOptions[0]). Persiste valor numérico em items.fields[key].
Eventos de socket
Não emite eventos.
Edge cases e regras especiais
- field_key gerado do nome via slug — não é editável depois (mudaria os items que já guardaram valor com a key antiga)
- Sistema é imutável — usuário não pode editar nem deletar definitions do seed
is_hiddenpreserva dados em items existentes mas remove da UI — usado quando uma definition do sistema é "descontinuada"- Colisão de field_key — backend gera key única por user (suffix numérico se duplicata)
- selectOptions imutáveis — em teoria, editar opções de uma select-definition após uso pode invalidar valores em items existentes. UI desincentiva edição.
- Money com moedas múltiplas — não suportado; cada definition é uma moeda fixa. Se quiser USD e BRL pra mesmo conceito, criar 2 definitions.
Dependências entre módulos
- Collections —
collection_field_schemareferencia field_definitions - Items —
items.fieldsindexado porfield_key - Steam — workers usam definitions de sistema (Plataforma, Horas jogadas, App ID) ao popular items