Collections und Felder anlegen
Feldtypen, technische Spalten und die Regel, dass eine Collection nur wächst.
Eine Collection ist ein Datenbestand mit festen Feldern. Der Agent legt sie mit ensure_collection an und ergänzt sie später mit demselben Aufruf. In der Produktion gilt eine Regel ohne Ausnahme: Eine Collection wächst nur. Plane Namen und Typen deshalb, bevor du baust.
Im Übungsraum beginnen
Baue eine Collection zuerst im Übungsraum. Ein Token für den Übungsraum legt dort frei an und ergänzt. Was entsteht, wartet danach im Adminbereich unter Schemaänderungen applizieren, bis ein Mensch es in die Produktion überträgt (Aus dem Übungsraum übertragen).
Solange ein Feld oder eine Collection nie in der Produktion stand, kann der Agent sie im Übungsraum mit discard_field und discard_collection verwerfen. Danach gilt die Regel der Produktion.
Feldtypen
| Typ | Inhalt | Filtern | Sortieren |
|---|---|---|---|
text | kurzer Text, höchstens 1000 Zeichen | ja | ja |
longtext | langer Text, höchstens 100 000 Zeichen | nur auf leer | nein |
integer | ganze Zahl | ja | ja |
decimal | Dezimalzahl mit vier Nachkommastellen, exakt | ja | ja |
boolean | ja oder nein | ja | ja |
date | Datum | ja | ja |
datetime | Zeitpunkt, gespeichert in UTC | ja | ja |
choice | ein Wert aus einer festen Liste | ja | ja |
reference | Verweis auf eine Zeile einer anderen Collection | ja | nein |
person | Verweis auf eine Person dieser Instanz | ja | nein |
context | ein Wert aus einem Kontext, etwa ein Standort | ja | nein |
Andere Typen gibt es nicht. Welche Operatoren ein Typ im Filter erlaubt, steht unter Daten lesen und schreiben.
Ein Feld ist Pflicht oder freiwillig. Überlege die Pflicht gut: Ein Werkzeug, das ein Pflichtfeld nicht schickt, bekommt einen Fehler.
Verweise, Personen und Kontexte
referencezeigt auf genau eine Zeile einer anderen Collection. Der Wert ist die Kennung dieser Zeile. Modelliere einen Verweis nie als Text mit einer Kennung darin: Der spätere Wechsel wäre ein Typwechsel.personspeichert die Kennung einer Person, nie ihren Namen. Ein Name ändert sich, die Kennung nicht. Eine Person gibt es erst nach ihrer ersten Anmeldung.contexthält einen Wert eines Kontexts, den die Administration pflegt (Kontexte). Eine Collection hat höchstens ein solches Feld. Die Stufecontextan einem Recht stützt sich darauf.
Technische Spalten
Jede Zeile trägt fünf Spalten, die du nicht anlegst und nicht selbst beschreibst:
| Spalte | Bedeutung |
|---|---|
id | die Kennung der Zeile, auf die ein Verweis zeigt |
created_by | wer die Zeile angelegt hat. Darauf stützt sich die Stufe own |
created_at | wann sie entstand |
updated_at | wann sie sich zuletzt änderte |
version | zählt bei jeder Änderung hoch. Jedes Schreiben nennt sie |
Ein Feld darf nicht so heissen wie eine dieser Spalten.
Was nicht geht
- Ein Feld oder eine Collection löschen. In der Produktion verschwindet nichts.
- Einen Typ wechseln. Aus
textwird niereference, ausintegerniedecimal. - Einen Wert einer
choice-Liste entfernen. Werte kommen dazu, keiner geht weg.
Umbenennen und stilllegen
Beides erledigt ein Mensch im Adminbereich, auf der Seite der Collection (Struktur).
- Feld umbenennen: Das Feld bekommt einen neuen Namen, der alte Name gilt weiter. Ein Werkzeug, das noch den alten Namen schickt, arbeitet weiter. Antworten nennen immer den aktuellen Namen.
- Stilllegen: Ein stillgelegtes Feld nimmt keine neuen Werte an, bestehende bleiben lesbar. Ein Werkzeug, das es noch schickt, bekommt einen Fehler mit dem Feldnamen. Das Stilllegen lässt sich zurücknehmen. Auch eine ganze Collection lässt sich stilllegen: Sie nimmt dann keine neuen Zeilen an.
Zweck und Aufbewahrungsfrist
Eine neue Collection nennt ihren Zweck (wofür dein Betrieb die Daten verarbeitet, ein bis zwei Sätze) und ihre Aufbewahrungsfrist (eine Anzahl Monate oder unbegrenzt). Ohne beides legt die Instanz die Collection nicht an. Die Angaben kommen von dir, nicht vom Agenten.
Rechte
Eine neue Collection hat keine Rechte. Gib ensure_collection mit grantTo eine Rolle mit, oder vergib das Recht danach (Rechte vergeben).