Skip to main content
A camada de dados de um app Twenty é o conjunto de dados que seu app adiciona a um workspace — os novos tipos de registros que ele declara, as colunas que adiciona a objetos existentes e como esses registros se conectam entre si.

Nesta seção

Objetos

defineObject — declare novos tipos de registros com seus próprios campos.

Estendendo objetos

defineField — adicione campos a objetos padrão ou de outros apps.

Relações

Conexões bidirecionais MANY_TO_ONE / ONE_TO_MANY entre objetos.

Entidades em resumo

O SDK detecta esses elementos por meio de análise de AST em tempo de build, então a organização dos arquivos fica a seu critério — a convenção é src/objects/, src/fields/ e src/indexes/. UUIDs universalIdentifier estáveis conectam tudo em implantações diferentes.

Índices (Opcional)

Os apps podem incluir índices junto com seus objetos para manter rápidas as consultas recorrentes. O caso mais comum é uma coluna de status ou de chave estrangeira que você lê com frequência.
src/indexes/post-card-status.index.ts

Índices únicos

defineIndex aceita isUnique: true tanto para unicidade de uma única coluna quanto de múltiplas colunas. Este é o recurso recomendado — defineField({ isUnique: true }) está obsoleto e será removido em uma versão futura.

Outras restrições

  • Cláusulas WHERE parciais permanecem sob controle do administrador — os apps não podem declará-las.
  • Cada objeto é limitado a 10 índices personalizados (os índices do próprio framework não contam).
Ordene o array fields da forma como o Postgres deve usá-lo — coluna mais à esquerda primeiro, como em uma lista telefônica. Índices não são gratuitos: cada gravação na tabela os atualiza. Adicione um apenas quando você tiver uma consulta que precise dele.
Procurando por Application Config ou Roles & Permissions? Esses descrevem o próprio app em vez dos dados que ele adiciona — eles ficam em Config. Procurando por Connections (Linear, GitHub, Slack OAuth)? Essas existem para serem chamadas a partir de funções de lógica e ficam em Logic.