Zum Inhalt springen

Sammlungen

Eine Sammlung ist ein TypeScript-Objekt, das eine Datenbanktabelle beschreibt und wie diese in der Admin-Benutzeroberfläche erscheinen soll. Sie definiert:

  • Schema – Eigenschaften (Spalten), deren Typen und Validierungsregeln
  • Relationen – Fremdschlüssel, Verknüpfungstabellen und Join-Pfade
  • Sicherheit – Row Level Security-Richtlinien
  • UI-Verhalten – Ansichtsmodi, Inline-Bearbeitung, Entitätsansichten, Aktionen
  • Lebenszyklus-Hooks – Callbacks für Erstellungs-, Aktualisierungs- und Löschvorgänge
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
}
}
};
EigenschaftTypBeschreibung
slugstringErforderlich. URL-sicherer Bezeichner. Wird in der Admin-UI-URL und im REST-API-Pfad (/api/data/{slug}) verwendet.
namestringErforderlich. Anzeigename (Plural). Wird in der Navigation und in Seitenüberschriften angezeigt.
singularNamestringAnzeigename für eine einzelne Entität. Wird in „Neues Produkt“, „Produkt bearbeiten“ usw. verwendet.
tablestringErforderlich. PostgreSQL-Tabellenname. Wenn er sich vom slug unterscheidet, können URLs von Tabellennamen entkoppelt werden.
iconstringMaterial-Icon-Schlüssel. Siehe Google Fonts Icons.
EigenschaftTypBeschreibung
propertiesPropertiesErforderlich. Abbildung von Eigenschaftsschlüssel → Eigenschaftsdefinition. Jeder Schlüssel wird zu einer Datenbankspalte.
relationsRelation[]SQL-Relationen – Fremdschlüssel, Verknüpfungstabellen. Siehe Relationen.
securityRulesSecurityRule[]Row Level Security-Richtlinien. Siehe Sicherheitsregeln.
EigenschaftTypStandardBeschreibung
defaultViewMode"list" | "table" | "cards" | "kanban""table"Standardansichtsmodus
enabledViewsViewMode[]Alle vierWelche Ansichtsmodi verfügbar sind
kanbanKanbanConfigKanban-Konfiguration (Spalteneigenschaft)
openEntityMode"side_panel" | "full_screen" | "split""full_screen"Wie Entitäten zur Bearbeitung geöffnet werden
sideDialogWidthnumber | stringBreite des Seitendialogs
inlineEditingbooleantrueInline-Bearbeitung in der Tabellenansicht aktivieren
defaultSize"xs" | "s" | "m" | "l" | "xl""m"Standardzeilenhöhe in der Tabelle
paginationboolean | numbertrue (50)Paginierung aktivieren und/oder Seitengröße festlegen
listPropertiesstring[]Eigenschaften, die in der Listenansicht angezeigt werden sollen
propertiesOrderstring[]Spaltenreihenfolge in der Tabellenansicht
selectionEnabledbooleantrueZeilenauswahl aktivieren
hideFromNavigationbooleanfalseAus der Sidebar-Navigation ausblenden
defaultSelectedViewstring | functionStandardansicht oder Unterkollektion, die geöffnet werden soll
EigenschaftTypStandardBeschreibung
formAutoSavebooleanfalseAutomatisches Speichern bei Feldänderung
localChangesBackup"manual_apply" | "auto_apply" | false"manual_apply"Ungespeicherte Änderungen sichern
hideIdFromFormbooleanfalseDie Entitäts-ID aus dem Formular ausblenden
hideIdFromCollectionbooleanfalseDie ID-Spalte aus der Tabelle ausblenden
includeJsonViewbooleanfalseEinen JSON-Tab in der Entitätsansicht anzeigen
historybooleanfalseÄnderungen in der Entitätshistorie verfolgen
alwaysApplyDefaultValuesbooleanfalseStandardwerte bei jedem Speichern anwenden
previewPropertiesstring[]Eigenschaften, die in Referenzvorschauen angezeigt werden sollen
titlePropertystringEigenschaft, die als Entitätstitel verwendet werden soll
EigenschaftTypBeschreibung
callbacksEntityCallbacksLebenszyklus-Hooks (beforeSave, afterSave, beforeDelete, etc.)
entityActionsEntityAction[]Benutzerdefinierte Aktionen für Entitäten (archivieren, veröffentlichen usw.)
ActionsReact.ComponentTypeBenutzerdefinierte Symbolleisten-Aktionskomponente
entityViewsEntityCustomView[]Benutzerdefinierte Tabs in der Entitätsdetailansicht
additionalFieldsAdditionalFieldDelegate[]Berechnete/virtuelle Spalten
childCollections() => EntityCollection[]Verschachtelte Kindersammlungen
subcollections() => EntityCollection[]Verschachtelte Sammlungen (z.B. Bestellung → Posten)
exportableboolean | ExportConfigDatenexport aktivieren
ownerIdstringBesitzer-Benutzer-ID (von Plugins/benutzerdefiniertem Code verwendet)
overridesEntityOverridesOverrides für die Entitätsansicht
driverstringZu verwendender Datenbanktreiber (Standard: "(default)")
databaseIdstringDatenbank-/Schema-ID innerhalb des Treibers

Für dynamische Sammlungen, die sich basierend auf dem Benutzer oder externen Daten ändern, verwenden Sie eine Builder-Funktion:

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

Sie können Standard- oder erzwungene Filter festlegen:

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