Сайт ↗
Разделы документации
CLI интерфейс · 0.8.1

CLI: модули и сущности

Создание сущностей, группировка в меню, настройка операций, перенос и удаление.

На этой странице

Модуль группирует сущности в навигации и URL. Persistent-сущность описывает данные с собственным хранением; virtual может представлять выборку только для чтения. Для обычной статьи создайте модуль, сущность и поля:

admingen-cli --path ./docs-demo module add content
admingen-cli --path ./docs-demo entity add Article --module content --table articles
admingen-cli --path ./docs-demo entity field add Article id --type int --primary-key --auto-generate identity
admingen-cli --path ./docs-demo entity field add Article title --type string --required

Пока изменён только манифест. Таблица появится после Generate и применения миграции. Для persistent нужны имя таблицы и существующий модуль. Имя сущности пишется PascalCase, таблицы — snake_case; уникальность сущностей проверяется без учёта регистра.

Посмотреть модули, поменять порядок и перенести сущность

admingen-cli --path ./docs-demo module list
admingen-cli --path ./docs-demo module show content
admingen-cli --path ./docs-demo module update content --position 0
admingen-cli --path ./docs-demo module add knowledge
admingen-cli --path ./docs-demo entity update Article --module knowledge

Позиции начинаются с нуля. Перенос Article в другой модуль меняет группировку в меню и маршрутах. До Generate проверьте, какие URL изменятся и какие клиенты их используют. Модуль не добавляет сущностям права.

Модуль можно удалить только пустым: сначала перенесите или удалите его сущности. Удаление определения и удаление строк БД — разные действия; результат смотрите в плане и миграциях.

Разделяйте операцию, интерфейс и доступ

--create=false отключает создание в самой модели CRUD. --admin-create не сможет включить его обратно. --list и --form у entity управляют интерфейсом; admin-параметры — доступом к операциям, external-параметры — режимами off, authenticated, anonymous.

Например, так можно закрыть внешнее чтение и запретить административное удаление:

admingen-cli --path ./docs-demo entity update Article \
  --external-list off --external-get off \
  --admin-delete=false

Если внешнее чтение нужно, но только для опубликованных записей, дополнительно задайте серверное правило status = published. Оно работает вместе с режимом операции. Подробности — разрешения и правила чтения.

Для новой виртуальной выборки используйте projection. virtual без режима projection сохраняет прежний вариант сущности без собственной таблицы. Значение system присутствует среди типов, но не означает готовую пользовательскую system entity.

Справочник команд

Команда Вызов
entity admingen-cli entity [command]
module admingen-cli module [command]
entity add admingen-cli entity add <entity-name> [flags]
entity delete admingen-cli entity delete <entity-name> [flags]
entity update admingen-cli entity update <entity-name> [flags]
module add admingen-cli module add <module-name> [flags]
module delete admingen-cli module delete <module-name> [flags]
module list admingen-cli module list [flags]
module show admingen-cli module show <module-name> [flags]
module update admingen-cli module update <module-name> [flags]

Общие параметры находятся в основах CLI. Подставляйте свои имена вместо аргументов в угловых скобках. В update непереданное свойство остаётся прежним; значения по умолчанию в таблице не применяются ко всем полям повторно.

Параметры

Параметр Где применяется По умолчанию Смысл
--admin-create entity add, entity update true Разрешение Create в admin API в пределах доступной операции.
--admin-delete entity add, entity update true Разрешение Delete в admin API.
--admin-get entity add, entity update true Разрешение чтения одной записи в admin API.
--admin-list entity add, entity update true Разрешение списка записей в admin API.
--admin-update entity add, entity update true Разрешение изменения в admin API.
--create entity add, entity update true Включить создание записей в модели CRUD.
--delete entity add, entity update true Включить удаление записей в модели CRUD.
--external-create VALUE entity add, entity update "off" Режим внешнего Create: off, authenticated или anonymous.
--external-delete VALUE entity add, entity update "off" Режим внешнего Delete: off, authenticated или anonymous.
--external-get VALUE entity add, entity update "off" Режим внешнего Get: off, authenticated или anonymous.
--external-list VALUE entity add, entity update "off" Режим внешнего List: off, authenticated или anonymous.
--external-update VALUE entity add, entity update "off" Режим внешнего Update: off, authenticated или anonymous.
--form entity add, entity update true Включить форму сущности в административном интерфейсе.
--kind VALUE entity add, entity update "persistent" Вид сущности: persistent, virtual или system. Обычный хранимый объект — persistent.
--list entity add, entity update true В entity — список UI; в projection — чтение списка корневых записей.
--module VALUE entity add, entity update пустая строка Для init — путь Go-модуля; для сущности/проекции — существующий модуль навигации. В update означает перенос.
--read entity add, entity update true Включить чтение: список и отдельную запись.
--table VALUE entity add, entity update пустая строка Физическое имя таблицы persistent-сущности.
--update entity add, entity update true Включить изменение записей в модели CRUD.
--new-name VALUE entity update, module update пустая строка Новое имя там, где это поддерживает команда. Для сохранённого поля обычный update не переименовывает его: используйте Rename.
--position VALUE module update 0 Новая позиция модуля в manifest, начиная с нуля.

Переименование и удаление

admingen-cli --path ./docs-demo module update knowledge --new-name content
admingen-cli --path ./docs-demo module delete empty_module

module delete принимает только пустой модуль. entity update --new-name меняет техническое имя после проверки всей модели. Это не универсальная SQL-команда переименования таблицы: проверьте diff и зависимые связи.

Для уже сгенерированной сущности при удалении нужно выбрать --storage retain|drop. --archive-custom переносит выведенный из приложения custom-код в архив вне каталогов компиляции. Вариант drop требует --confirm-data-loss; данные удаляются при применении миграции. Полный порядок — жизненный цикл модели.