Entry-Registry
Entry-Registry
Abschnitt betitelt „Entry-Registry“Abfragen und modifizieren Sie registrierte Entries. Zugriff auf Metadaten, Snapshots und Versionshistorie.
local registry = require("registry")Entry-Struktur
Abschnitt betitelt „Entry-Struktur“{ id = "app.lib:assert", -- string: "namespace:name" kind = "function.lua", -- string: Entry-Typ meta = {type = "test"}, -- table: durchsuchbare Metadaten data = {...} -- any: Entry-Payload}Entry abrufen
Abschnitt betitelt „Entry abrufen“local entry, err = registry.get("app.lib:assert")Berechtigung: registry.get auf Entry-ID
Entries finden
Abschnitt betitelt „Entries finden“local entries, err = registry.find({kind = "function.lua"})local entries, err = registry.find({kind = "http.endpoint", namespace = "app.api"})Filterfelder werden gegen Entry-Metadaten abgeglichen.
ID parsen
Abschnitt betitelt „ID parsen“local id = registry.parse_id("app.lib:assert")-- id.ns = "app.lib", id.name = "assert"Snapshots
Abschnitt betitelt „Snapshots“Zeitpunktbezogene Ansicht der Registry:
local snap, err = registry.snapshot() -- aktueller Zustandlocal snap, err = registry.snapshot_at(5) -- bei Version 5Snapshot-Methoden
Abschnitt betitelt „Snapshot-Methoden“| Methode | Gibt zurück | Beschreibung |
|---|---|---|
snap:entries() | Entry[], error | Alle zugänglichen Entries |
snap:get(id) | Entry, error | Einzelner Entry nach ID |
snap:find(filter) | Entry[] | Entries filtern |
snap:namespace(ns) | Entry[] | Entries im Namespace |
snap:version() | Version | Snapshot-Version |
snap:changes() | Changes | Changeset erstellen |
Versionen
Abschnitt betitelt „Versionen“local version, err = registry.current_version()local versions, err = registry.versions()
print(version:id()) -- numerische IDprint(version:string()) -- Anzeigestringlocal prev = version:previous() -- vorherige Version oder nillocal next = version:next() -- nächste Version oder nilHistorie
Abschnitt betitelt „Historie“local hist, err = registry.history()local versions, err = hist:versions()local version, err = hist:get_version(5)local snap, err = hist:snapshot_at(version)Changesets
Abschnitt betitelt „Changesets“Modifikationen aufbauen und anwenden:
local snap, err = registry.snapshot()local changes = snap:changes()
changes:create({ id = "test:new_entry", kind = "test.kind", meta = {type = "test"}, data = {config = "value"}})
changes:update({ id = "test:existing", kind = "test.kind", meta = {updated = true}, data = {new_value = true}})
changes:delete("test:old_entry")
local new_version, err = changes:apply()Berechtigung: registry.apply für changes:apply()
Changes-Methoden
Abschnitt betitelt „Changes-Methoden“| Methode | Beschreibung |
|---|---|
changes:create(entry) | Create-Operation hinzufügen |
changes:update(entry) | Update-Operation hinzufügen |
changes:delete(id) | Delete-Operation hinzufügen (String oder {ns, name}) |
changes:ops() | Ausstehende Operationen abrufen |
changes:apply() | Änderungen anwenden, gibt neue Version zurück |
Version anwenden
Abschnitt betitelt „Version anwenden“Auf eine bestimmte Version vor- oder zurückrollen:
local prev = current_version:previous()local ok, err = registry.apply_version(prev)Berechtigung: registry.apply_version
Delta erstellen
Abschnitt betitelt „Delta erstellen“Operationen berechnen, um zwischen Zuständen zu wechseln:
local from = {{id = "test:a", kind = "test", meta = {}, data = {}}}local to = {{id = "test:b", kind = "test", meta = {}, data = {}}}
local ops, err = registry.build_delta(from, to)for _, op in ipairs(ops) do print(op.kind, op.entry.id) -- "entry.create", "entry.update", "entry.delete"endBerechtigungen
Abschnitt betitelt „Berechtigungen“| Berechtigung | Ressource | Beschreibung |
|---|---|---|
registry.get | Entry-ID | Entry lesen (filtert auch find/entries-Ergebnisse) |
registry.apply | - | Changeset anwenden |
registry.apply_version | - | Version anwenden/zurückrollen |
| Bedingung | Art |
|---|---|
| Entry nicht gefunden | errors.NOT_FOUND |
| Version nicht gefunden | errors.NOT_FOUND |
| Berechtigung verweigert | errors.PERMISSION_DENIED |
| Ungültiger Parameter | errors.INVALID |
| Keine Änderungen anzuwenden | errors.INVALID |
| Registry nicht verfügbar | errors.INTERNAL |
Siehe Fehlerbehandlung für die Arbeit mit Fehlern.