Geek Social — Documentação
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, sem user_id) — vem com seeds, compartilhado entre todos os usuários
  • Custom do usuário (is_system=false, com user_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

TabelaPapel
field_definitionsCatálogo
collection_field_schemaOnde são referenciadas

Endpoints

3 endpoints simples:

EndpointAuthResumo
GET /field-definitionsJWTLista (sistema + custom)
POST /field-definitionsJWTCriar custom
DELETE /field-definitions/:idJWTRemover 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_hidden preserva 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

  • Collectionscollection_field_schema referencia field_definitions
  • Itemsitems.fields indexado por field_key
  • Steam — workers usam definitions de sistema (Plataforma, Horas jogadas, App ID) ao popular items

On this page