Pular para o conteúdo

Coleções

Uma coleção é um objeto TypeScript que descreve uma tabela de banco de dados e como ela deve aparecer na UI de administração. Ela define:

  • Esquema — Propriedades (colunas), seus tipos e regras de validação
  • Relações — Chaves estrangeiras, tabelas de junção e caminhos de junção
  • Segurança — Políticas de Segurança em Nível de Linha
  • Comportamento da UI — Modos de visualização, edição inline, visualizações de entidade, ações
  • Hooks de Ciclo de Vida — Callbacks para operações de criação, atualização, exclusão
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
}
}
};
PropriedadeTipoDescrição
slugstringObrigatório. Identificador seguro para URL. Usado no URL da UI de administração e no caminho da API REST (/api/data/{slug}).
namestringObrigatório. Nome de exibição (plural). Mostrado na navegação e nos cabeçalhos das páginas.
singularNamestringNome de exibição para uma única entidade. Usado em “Novo Produto”, “Editar Produto”, etc.
tablestringObrigatório. Nome da tabela PostgreSQL. Se diferente de slug, permite desacoplar URLs dos nomes das tabelas.
iconstringChave do ícone Material. Veja Google Fonts Icons.
PropriedadeTipoDescrição
propertiesPropertiesObrigatório. Mapa de chave de propriedade → definição de propriedade. Cada chave se torna uma coluna de banco de dados.
relationsRelation[]Relações SQL — chaves estrangeiras, tabelas de junção. Veja Relações.
securityRulesSecurityRule[]Políticas de Segurança em Nível de Linha. Veja Regras de Segurança.
PropriedadeTipoPadrãoDescrição
defaultViewMode"list" | "table" | "cards" | "kanban""table"Modo de visualização padrão
enabledViewsViewMode[]Todos os quatroQuais modos de visualização estão disponíveis
kanbanKanbanConfigConfiguração Kanban (propriedade da coluna)
openEntityMode"side_panel" | "full_screen" | "split""full_screen"Como as entidades são abertas para edição
sideDialogWidthnumber | stringLargura do diálogo lateral
inlineEditingbooleantrueHabilita a edição inline na visualização de planilha
defaultSize"xs" | "s" | "m" | "l" | "xl""m"Altura padrão da linha na tabela
paginationboolean | numbertrue (50)Habilita a paginação e/ou define o tamanho da página
listPropertiesstring[]Propriedades a serem exibidas na visualização de lista
propertiesOrderstring[]Ordem das colunas na visualização de tabela
selectionEnabledbooleantrueHabilita a seleção de linha
hideFromNavigationbooleanfalseOcultar da navegação da barra lateral
defaultSelectedViewstring | functionVisualização padrão ou subcoleção a ser aberta
PropriedadeTipoPadrãoDescrição
formAutoSavebooleanfalseAuto-salvar na mudança de campo
localChangesBackup"manual_apply" | "auto_apply" | false"manual_apply"Fazer backup de mudanças não salvas
hideIdFromFormbooleanfalseOcultar o ID da entidade do formulário
hideIdFromCollectionbooleanfalseOcultar a coluna de ID da tabela
includeJsonViewbooleanfalseMostrar uma aba JSON na visualização de entidade
historybooleanfalseRastrear mudanças no histórico da entidade
alwaysApplyDefaultValuesbooleanfalseAplicar valores padrão em cada salvamento
previewPropertiesstring[]Propriedades a serem exibidas nas pré-visualizações de referência
titlePropertystringPropriedade a ser usada como título da entidade
PropriedadeTipoDescrição
callbacksEntityCallbacksHooks de ciclo de vida (beforeSave, afterSave, beforeDelete, etc.)
entityActionsEntityAction[]Ações personalizadas em entidades (arquivar, publicar, etc.)
ActionsReact.ComponentTypeComponente de ações personalizadas da barra de ferramentas
entityViewsEntityCustomView[]Abas personalizadas na visualização de detalhes da entidade
additionalFieldsAdditionalFieldDelegate[]Colunas calculadas/virtuais
childCollections() => EntityCollection[]Coleções filhas aninhadas
subcollections() => EntityCollection[]Coleções aninhadas (por exemplo, pedido → itens de linha)
exportableboolean | ExportConfigHabilita a exportação de dados
ownerIdstringID do usuário proprietário (usado por plugins/código personalizado)
overridesEntityOverridesSobrescritas para a visualização da entidade
driverstringDriver de banco de dados a ser usado (padrão: "(default)")
databaseIdstringID do banco de dados/esquema dentro do driver

Para coleções dinâmicas que mudam com base no usuário ou dados externos, use uma função construtora:

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

Você pode definir filtros padrão ou forçados:

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