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
| Entidade | Finalidade | Definido com |
|---|---|---|
| Objeto | Um novo tipo de registro personalizado (por exemplo, PostCard, Invoice) com seus próprios campos | defineObject() |
| Campo | Uma coluna em um objeto. Campos independentes podem estender objetos que você não criou (por exemplo, adicionar loyaltyTier ao objeto Company) | defineField() |
| Relação | Um vínculo bidirecional entre dois objetos — ambos os lados declarados como campos | defineField() com FieldType.RELATION |
| Índice | Um índice de banco de dados para acelerar uma consulta recorrente em um dos seus objetos | defineIndex() |
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
WHEREparciais 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).
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.