Saltar al contenido principal

Qué cubre la capa de datos

La capa de datos de una aplicación de Twenty es el conjunto de datos que tu aplicación agrega a un espacio de trabajo — los nuevos tipos de registros que declara, las columnas que agrega a los objetos existentes y cómo esos registros se conectan entre sí.

En esta sección

card-page-objects
Objects
defineObject — declarar nuevos tipos de registro con sus propios campos.
card-page-extending-objects
Extender Objetos
defineField - añadir campos a objetos estándar u otras aplicaciones.
card-page-relations
Relaciones
Conexiones bidireccionales MANY_TO_ONE / ONE_TO_MANY entre objetos.
card-page-timeline
Tipos de actividad de línea de tiempo
Definir eventos de auditoría automática y eventos explícitos de la aplicación para grabar cronología.
card-page-validation-rules
Reglas de validación
defineValidationRule — declara las condiciones que un registro debe cumplir antes de poder guardarse.

Entidades de un vistazo

La CLI detecta estos mediante análisis AST en tiempo de compilación, por lo que la organización de los archivos depende de ti; la convención es src/objects/, src/validation-rules/, src/fields/, src/indexes/, src/timeline-activity-types/ y src/related-record-paths/. Los UUID universalIdentifier estables vinculan todo a través de los despliegues.

Índices (opcional)

Las aplicaciones pueden incluir índices junto con sus objetos para mantener rápidas las consultas recurrentes. El caso más habitual es una columna de estado o de clave externa que lees con frecuencia.
src/indexes/post-card-status.index.ts

Índices únicos

defineIndex acepta isUnique: true tanto para unicidad de una sola columna como de varias columnas. Este es el elemento primitivo recomendado — defineField({ isUnique: true }) está obsoleto y se eliminará en una versión futura.

Otras restricciones

  • Las cláusulas WHERE parciales permanecen bajo el control del administrador: las aplicaciones no pueden declararlas.
  • Cada objeto está limitado a 10 índices personalizados (los índices propios del framework no cuentan).
Ordena el arreglo fields de la forma en que Postgres debería usarlo: la columna más a la izquierda primero, como en una guía telefónica. Los índices no son gratuitos: cada escritura en la tabla los actualiza. Añade uno solo cuando tengas una consulta que lo necesite.

Rutas de registros relacionados (opcional)

Las rutas de registros relacionados están en vista previa: se sincronizan con tu aplicación, pero los permisos de registros aún no las usan. Una vez aplicadas, requieren el plan Organization o superior, como la seguridad a nivel de fila.
Una ruta de registros relacionados comienza en un objeto y sigue hasta tres campos de relación, cada uno en el objeto al que llegó el anterior. Los permisos de registros usan estas rutas para ampliar el acceso de un registro a sus registros relacionados.
  • Una ruta inherente (isInherent: true) se aplica siempre que se pueda leer el registro inicial, independientemente de cómo se haya concedido ese acceso. Úsala para los registros que pertenecen a su elemento principal, como los archivos adjuntos de una tarjeta de publicación.
  • Una ruta regular se aplica solo cuando el acceso al registro inicial proviene directamente de un rol, por lo que los espacios de trabajo eligen en cuáles basarse.
src/related-record-paths/post-card-attachments.related-record-path.ts
Agrega secondFieldMetadataUniversalIdentifier y thirdFieldMetadataUniversalIdentifier para rutas más largas. Cada salto debe ser una relación activa en el objeto al que se ha llegado hasta el momento, una ruta no puede visitar el mismo objeto dos veces y dos rutas no pueden usar los mismos saltos.
¿Buscas Application Config o Roles & Permissions? Esos describen la propia aplicación en lugar de los datos que agrega; se encuentran en Config. ¿Buscas Connections (Linear, GitHub, Slack OAuth)? Estas existen para ser llamadas desde las funciones lógicas y se encuentran en Logic.