Ir al contenido

Colecciones

Una colección es un objeto TypeScript que describe una tabla de base de datos y cómo debe aparecer en la interfaz de administración. Define:

  • Esquema — Propiedades (columnas), sus tipos y reglas de validación
  • Relaciones — Claves foráneas, tablas de unión y rutas de unión
  • Seguridad — Políticas de Seguridad a Nivel de Fila
  • Comportamiento de la UI — Modos de vista, edición en línea, vistas de entidad, acciones
  • Ganchos de ciclo de vida — Callbacks para operaciones de creación, actualización, eliminación
import { EntityCollection } from "@rebasepro/types";
export const productsCollection: EntityCollection = {
slug: "products", // URL path and API endpoint
name: "Products", // Display name (plural)
singularName: "Product", // Display name (singular)
table: "products", // PostgreSQL table name
icon: "inventory_2", // Material icon key
properties: {
name: {
type: "string",
name: "Product Name",
validation: { required: true }
},
price: {
type: "number",
name: "Price",
validation: { required: true, min: 0 }
},
category: {
type: "string",
name: "Category",
enum: [
{ id: "electronics", label: "Electronics", color: "blueDark" },
{ id: "clothing", label: "Clothing", color: "pinkLight" },
{ id: "books", label: "Books", color: "orangeDark" }
]
},
description: {
type: "string",
name: "Description",
multiline: true
},
active: {
type: "boolean",
name: "Active",
defaultValue: true
},
created_at: {
type: "date",
name: "Created At",
autoValue: "on_create",
readOnly: true
}
}
};
PropiedadTipoDescripción
slugstringRequerido. Identificador seguro para URL. Usado en la URL de la UI de administración y la ruta de la API REST (/api/data/{slug}).
namestringRequerido. Nombre de visualización (plural). Se muestra en la navegación y los encabezados de página.
singularNamestringNombre de visualización para una sola entidad. Usado en “Nuevo Producto”, “Editar Producto”, etc.
tablestringRequerido. Nombre de la tabla PostgreSQL. Si es diferente de slug, permite desacoplar las URLs de los nombres de las tablas.
iconstringClave del icono de Material Design. Ver Google Fonts Icons.
PropiedadTipoDescripción
propertiesPropertiesRequerido. Mapa de clave de propiedad → definición de propiedad. Cada clave se convierte en una columna de la base de datos.
relationsRelation[]Relaciones SQL — claves foráneas, tablas de unión. Ver Relaciones.
securityRulesSecurityRule[]Políticas de Seguridad a Nivel de Fila. Ver Reglas de Seguridad.
PropiedadTipoPredeterminadoDescripción
defaultViewMode"list" | "table" | "cards" | "kanban""table"Modo de vista predeterminado
enabledViewsViewMode[]Las cuatroQué modos de vista están disponibles
kanbanKanbanConfigConfiguración de Kanban (propiedad de columna)
openEntityMode"side_panel" | "full_screen" | "split""full_screen"Cómo se abren las entidades para editar
sideDialogWidthnumber | stringAncho del diálogo lateral
inlineEditingbooleantrueHabilitar edición en línea en la vista de hoja de cálculo
defaultSize"xs" | "s" | "m" | "l" | "xl""m"Altura predeterminada de la fila en la tabla
paginationboolean | numbertrue (50)Habilitar paginación y/o establecer el tamaño de página
listPropertiesstring[]Propiedades a mostrar en la vista de lista
propertiesOrderstring[]Orden de las columnas en la vista de tabla
selectionEnabledbooleantrueHabilitar selección de filas
hideFromNavigationbooleanfalseOcultar de la navegación de la barra lateral
defaultSelectedViewstring | functionVista o subcolección predeterminada a abrir
PropiedadTipoPredeterminadoDescripción
formAutoSavebooleanfalseAuto-guardar al cambiar de campo
localChangesBackup"manual_apply" | "auto_apply" | false"manual_apply"Realizar copia de seguridad de cambios no guardados
hideIdFromFormbooleanfalseOcultar el ID de la entidad del formulario
hideIdFromCollectionbooleanfalseOcultar la columna ID de la tabla
includeJsonViewbooleanfalseMostrar una pestaña JSON en la vista de entidad
historybooleanfalseRastrear cambios en el historial de la entidad
alwaysApplyDefaultValuesbooleanfalseAplicar valores predeterminados en cada guardado
previewPropertiesstring[]Propiedades a mostrar en las vistas previas de referencia
titlePropertystringPropiedad a usar como título de la entidad
PropiedadTipoDescripción
callbacksEntityCallbacksGanchos de ciclo de vida (beforeSave, afterSave, beforeDelete, etc.)
entityActionsEntityAction[]Acciones personalizadas sobre entidades (archivar, publicar, etc.)
ActionsReact.ComponentTypeComponente de acciones de barra de herramientas personalizado
entityViewsEntityCustomView[]Pestañas personalizadas en la vista de detalle de la entidad
additionalFieldsAdditionalFieldDelegate[]Columnas calculadas/virtuales
childCollections() => EntityCollection[]Colecciones hijas anidadas
subcollections() => EntityCollection[]Colecciones anidadas (p. ej., pedido → artículos de línea)
exportableboolean | ExportConfigHabilitar exportación de datos
ownerIdstringID de usuario propietario (usado por plugins/código personalizado)
overridesEntityOverridesAnulaciones para la vista de entidad
driverstringDriver de base de datos a usar (predeterminado: "(default)")
databaseIdstringID de base de datos/esquema dentro del driver

Para colecciones dinámicas que cambian según el usuario o datos externos, use una función constructora:

const collectionsBuilder: EntityCollectionsBuilder = ({ user, authController }) => {
const collections = [productsCollection];
if (authController.extra?.role === "admin") {
collections.push(adminSettingsCollection);
}
return collections;
};

Puede establecer filtros predeterminados o forzados:

{
// Default filter — users can change it
filter: { active: ["==", true] },
// Forced filter — cannot be changed
forceFilter: { tenant_id: ["==", currentTenantId] },
// Default sort
sort: ["created_at", "desc"]
}