Реестр записей
Реестр записей
Заголовок раздела «Реестр записей»Запрос и изменение зарегистрированных записей. Доступ к метаданным, снимкам и истории версий.
Загрузка
Заголовок раздела «Загрузка»local registry = require("registry")Структура записи
Заголовок раздела «Структура записи»{ id = "app.lib:assert", -- string: "namespace:name" kind = "function.lua", -- string: тип записи meta = {type = "test"}, -- table: метаданные для поиска data = {...} -- any: полезная нагрузка}Получение записи
Заголовок раздела «Получение записи»local entry, err = registry.get("app.lib:assert")Разрешение: registry.get на ID записи
Поиск записей
Заголовок раздела «Поиск записей»local entries, err = registry.find({kind = "function.lua"})local entries, err = registry.find({kind = "http.endpoint", namespace = "app.api"})Поля фильтра сопоставляются с метаданными записей.
Разбор ID
Заголовок раздела «Разбор ID»local id = registry.parse_id("app.lib:assert")-- id.ns = "app.lib", id.name = "assert"Снимок состояния реестра на момент времени:
local snap, err = registry.snapshot() -- текущее состояниеlocal snap, err = registry.snapshot_at(5) -- на версии 5Методы снимка
Заголовок раздела «Методы снимка»| Метод | Возвращает | Описание |
|---|---|---|
snap:entries() | Entry[], error | Все доступные записи |
snap:get(id) | Entry, error | Одна запись по ID |
snap:find(filter) | Entry[] | Поиск записей по фильтру |
snap:namespace(ns) | Entry[] | Записи в пространстве имён |
snap:version() | Version | Версия снимка |
snap:changes() | Changes | Создать набор изменений |
local version, err = registry.current_version()local versions, err = registry.versions()
print(version:id()) -- числовой IDprint(version:string()) -- строковое представлениеlocal prev = version:previous() -- предыдущая версия или nillocal next = version:next() -- следующая версия или nilИстория
Заголовок раздела «История»local hist, err = registry.history()local versions, err = hist:versions()local version, err = hist:get_version(5)local snap, err = hist:snapshot_at(version)Наборы изменений
Заголовок раздела «Наборы изменений»Формирование и применение изменений:
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()Разрешение: registry.apply для changes:apply()
Методы изменений
Заголовок раздела «Методы изменений»| Метод | Описание |
|---|---|
changes:create(entry) | Добавить операцию создания |
changes:update(entry) | Добавить операцию обновления |
changes:delete(id) | Добавить операцию удаления (string или {ns, name}) |
changes:ops() | Получить ожидающие операции |
changes:apply() | Применить изменения, возвращает новую версию |
Применение версии
Заголовок раздела «Применение версии»Откат или переход к конкретной версии:
local prev = current_version:previous()local ok, err = registry.apply_version(prev)Разрешение: registry.apply_version
Вычисление дельты
Заголовок раздела «Вычисление дельты»Вычислить операции для перехода между состояниями:
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"endРазрешения
Заголовок раздела «Разрешения»| Разрешение | Ресурс | Описание |
|---|---|---|
registry.get | ID записи | Чтение записи (также фильтрует результаты find/entries) |
registry.apply | - | Применение набора изменений |
registry.apply_version | - | Применение/откат версии |
| Условие | Kind |
|---|---|
| Запись не найдена | errors.NOT_FOUND |
| Версия не найдена | errors.NOT_FOUND |
| Доступ запрещён | errors.PERMISSION_DENIED |
| Неверный параметр | errors.INVALID |
| Нет изменений для применения | errors.INVALID |
| Реестр недоступен | errors.INTERNAL |
См. Обработка ошибок для работы с ошибками.