Registro de Entradas
Registro de Entradas
Sección titulada «Registro de Entradas»Consultar y modificar entradas registradas. Acceder a metadatos, instantaneas e historial de versiones.
local registry = require("registry")Estructura de Entrada
Sección titulada «Estructura de Entrada»{ id = "app.lib:assert", -- string: "namespace:name" kind = "function.lua", -- string: tipo de entrada meta = {type = "test"}, -- table: metadatos buscables data = {...} -- any: carga de entrada}Obtener Entrada
Sección titulada «Obtener Entrada»local entry, err = registry.get("app.lib:assert")Permiso: registry.get en ID de entrada
Buscar Entradas
Sección titulada «Buscar Entradas»local entries, err = registry.find({kind = "function.lua"})local entries, err = registry.find({kind = "http.endpoint", namespace = "app.api"})Los campos de filtro coinciden con los metadatos de entrada.
Parsear ID
Sección titulada «Parsear ID»local id = registry.parse_id("app.lib:assert")-- id.ns = "app.lib", id.name = "assert"Instantaneas
Sección titulada «Instantaneas»Vista punto en el tiempo del registro:
local snap, err = registry.snapshot() -- estado actuallocal snap, err = registry.snapshot_at(5) -- en versión 5Metodos de Instantanea
Sección titulada «Metodos de Instantanea»| Método | Devuelve | Descripción |
|---|---|---|
snap:entries() | Entry[], error | Todas las entradas accesibles |
snap:get(id) | Entry, error | Entrada unica por ID |
snap:find(filter) | Entry[] | Filtrar entradas |
snap:namespace(ns) | Entry[] | Entradas en namespace |
snap:versión() | Versión | Versión de instantanea |
snap:changes() | Changes | Crear conjunto de cambios |
Versiones
Sección titulada «Versiones»local versión, err = registry.current_version()local versions, err = registry.versions()
print(versión:id()) -- ID numericoprint(versión:string()) -- cadena de visualizacionlocal prev = versión:previous() -- versión anterior o nillocal next = versión:next() -- versión siguiente o nilHistorial
Sección titulada «Historial»local hist, err = registry.history()local versions, err = hist:versions()local versión, err = hist:get_version(5)local snap, err = hist:snapshot_at(versión)Conjuntos de Cambios
Sección titulada «Conjuntos de Cambios»Construir y aplicar modificaciones:
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()Permiso: registry.apply para changes:apply()
Metodos de Changes
Sección titulada «Metodos de Changes»| Método | Descripción |
|---|---|
changes:create(entry) | Agregar operación de creacion |
changes:update(entry) | Agregar operación de actualizacion |
changes:delete(id) | Agregar operación de eliminacion (string o {ns, name}) |
changes:ops() | Obtener operaciones pendientes |
changes:apply() | Aplicar cambios, devuelve nueva Versión |
Aplicar Versión
Sección titulada «Aplicar Versión»Retroceder o avanzar a una versión especifica:
local prev = current_version:previous()local ok, err = registry.apply_version(prev)Permiso: registry.apply_version
Construir Delta
Sección titulada «Construir Delta»Calcular operaciones para transicionar entre estados:
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"endPermisos
Sección titulada «Permisos»| Permiso | Recurso | Descripción |
|---|---|---|
registry.get | ID de entrada | Leer entrada (también filtra resultados de find/entries) |
registry.apply | - | Aplicar conjunto de cambios |
registry.apply_version | - | Aplicar/revertir versión |
Errores
Sección titulada «Errores»| Condición | Tipo |
|---|---|
| Entrada no encontrada | errors.NOT_FOUND |
| Versión no encontrada | errors.NOT_FOUND |
| Permiso denegado | errors.PERMISSION_DENIED |
| Parámetro invalido | errors.INVALID |
| Sin cambios para aplicar | errors.INVALID |
| Registro no disponible | errors.INTERNAL |
Consulte Manejo de Errores para trabajar con errores.